ホームページ >Java >&#&チュートリアル >JFreeChart の CombinedDomainXYPlot でドメイン軸を動的に再スケールする方法は?

JFreeChart の CombinedDomainXYPlot でドメイン軸を動的に再スケールする方法は?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-01 12:55:12460ブラウズ

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

CombinedDomainXYPlot でのドメイン軸の再スケーリング

CombinedDomainXYPlot を利用して複数のサブプロット間でドメイン軸を共有すると、範囲軸が調整されることが観察されます。データは変更されますが、ドメイン軸は変更されません。この問題を理解して対処するには、プロットの基礎となるメカニズムを詳しく調べる必要があります。

ドメイン軸の結合範囲

CombinedDomainXYPlot は、共有ドメイン軸の最大範囲を確立します。 、これにより軸の共有が可能になります。シリーズの表示設定の変更は、共有ドメイン軸に直接影響しません。ただし、データセットを変更すると、configure() メソッドを介してドメイン軸が更新されます。これにより、サブプロットの範囲軸を個別に更新できるようになります。

ドメイン軸の自動更新

共有ドメイン軸を自動的に調整するには、addSeries() または RemoveSeries を使用します。 setSeriesVisible() ではなく () です。これらのメソッドは、ドメイン軸の構成をトリガーします。

カスタマイズ例

以下のコード例は、CombinedDomainXYPlot を示しています。CombinedDomainXYPlot では、サブプロットが更新されるか、シリーズが更新されます非表示。

mainPlot.getDomainAxis().configure();

考慮事項

  • 初期スレッドが考慮され、フレームが適切にパックされていることを確認してください。
  • setAutoRange() を切り替えるという提案されたアプローチは、単一の configure() 呼び出しで置き換えることができますが、その効果は顕著ではない可能性があります。データと最大範囲は変更されません。

      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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。