首页 > Java > java教程 > 如何在 JFreeChart 的 CombinedDomainXYPlot 中动态重新缩放域轴?

如何在 JFreeChart 的 CombinedDomainXYPlot 中动态重新缩放域轴?

Linda Hamilton
发布: 2024-12-01 12:55:12
原创
466 人浏览过

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

CombinedDomainXYPlot 中的域轴重新缩放

当利用 CombinedDomainXYPlot 在多个子图之间共享域轴时,观察到范围轴调整为数据发生变化,而域轴保持不变。理解和解决这个问题需要仔细研究绘图的底层机制。

域轴的组合范围

CombinedDomainXYPlot 建立共享域轴的最大范围,这可以实现轴共享。系列可见性更改不会直接影响共享域轴。但是,更改数据集会通过 configure() 方法更新域轴。这允许独立更新子图的范围轴。

自动更新域轴

要自动调整共享域轴,请使用 addSeries() 或 removeSeries () 而不是 setSeriesVisible()。这些方法会触发域轴的配置。

示例自定义

下面的代码示例演示了一个 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板