>Java >java지도 시간 >JFreeChart의 CombinedDomainXYPlot에서 도메인 축의 크기를 동적으로 조정하는 방법은 무엇입니까?

JFreeChart의 CombinedDomainXYPlot에서 도메인 축의 크기를 동적으로 조정하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-01 12:55:12461검색

How to Dynamically Rescale the Domain Axis in JFreeChart's CombinedDomainXYPlot?

CombinedDomainXYPlot에서 도메인 축 크기 조정

CombinedDomainXYPlot을 활용하여 여러 하위 플롯 간에 도메인 축을 공유할 때 범위 축이 다음으로 조정되는 것으로 관찰됩니다. 데이터는 변경되지만 도메인 축은 변경되지 않습니다. 이 문제를 이해하고 해결하려면 플롯의 기본 메커니즘을 자세히 살펴봐야 합니다.

도메인 축의 결합 범위

CombinedDomainXYPlot은 공유 도메인 축의 최대 범위를 설정합니다. , 축 공유를 활성화합니다. 시리즈 가시성 변경은 공유 도메인 축에 직접적인 영향을 미치지 않습니다. 그러나 데이터 세트를 변경하면 구성() 메서드를 통해 도메인 축이 업데이트됩니다. 이를 통해 서브플롯의 범위 축을 독립적으로 업데이트할 수 있습니다.

도메인 축 자동 업데이트

공유 도메인 축을 자동으로 조정하려면 addSeries() 또는 RemoveSeries를 사용하세요. () 대신 setSeriesVisible()을 사용합니다. 이러한 메소드는 도메인 축 구성을 트리거합니다.

사용자 정의 예

아래 코드 예는 다음과 같은 경우 구성()을 호출하여 도메인 축이 업데이트되는 CombinedDomainXYPlot을 보여줍니다. 서브플롯이 업데이트되거나 시리즈가 숨겨져 있습니다.

mainPlot.getDomainAxis().configure();

고려 사항

  • 초기 스레드가 고려되고 프레임이 제대로 패킹되었는지 확인하세요.
  • setAutoRange() 전환에 대해 제안된 접근 방식은 단일 구성() 호출로 대체될 수 있지만 효과는 그렇지 않을 수 있습니다. 데이터와 최대 범위는 변경되지 않으므로 눈에 띄게 표시됩니다.

      public static void init() {
          XYItemRenderer renderer = new StandardXYItemRenderer(SHAPES_AND_LINES);
          XYPlot plot1 = new XYPlot(
              generateData(), null, new NumberAxis("Range 1"), renderer);
          XYPlot plot2 = new XYPlot(
              generateData(), null, new NumberAxis("Range 2"), renderer);
          final CombinedDomainXYPlot plot =
              new CombinedDomainXYPlot(new NumberAxis("Domain"));
          plot.setDomainPannable(true);
          plot.setRangePannable(true);
          plot.add(plot1);
          plot.add(plot2);
          plot.setOrientation(PlotOrientation.VERTICAL);
          JFreeChart chart = new JFreeChart(
              "Combined Plots", JFreeChart.DEFAULT_TITLE_FONT, plot, true);
          ChartPanel chartPanel = new ChartPanel(chart);
          chartPanel.setPreferredSize(new Dimension(800, 500));
    
          JPanel controlPanel = new JPanel();
          controlPanel.add(new JButton(new UpdateAction(plot, 0)));
          controlPanel.add(new JButton(new UpdateAction(plot, 1)));
          for (int i = 0; i < MAX; i++) {
              JCheckBox jcb = new JCheckBox(new VisibleAction(renderer, i));
              jcb.setSelected(true);
              renderer.setSeriesVisible(i, true);
              controlPanel.add(jcb);
          }
    
          JFrame frame = new JFrame("Combined Plot Example");
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          frame.add(chartPanel, BorderLayout.CENTER);
          frame.add(controlPanel, BorderLayout.SOUTH);
          frame.pack();
          frame.setLocationRelativeTo(null);
          frame.setVisible(true);
      }

위 내용은 JFreeChart의 CombinedDomainXYPlot에서 도메인 축의 크기를 동적으로 조정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.