JFreeChart Link Axes



我创建了一个框架,其中包含两个独立的JFree图表(采用2x1网格布局)。上图显示的是Canlestick图,下图显示的是时间序列图。我想做的是链接两个图表显示的X轴,这样当我放大一个图表时,另一个图表会放大到相应的时间段。

这可能吗?如果是的话,你能给我一个的例子吗

您需要的是CombinedDomainXYPlot。您不需要创建独立的JFreeChart对象,而是需要创建一个Combined绘图,并将所有需要链接的绘图放在那里。

使用JFreeChart#addChangeListener()将侦听器添加到两个图表中,并同步ChartChangeListener#chartChanged()中的DomainAxis,您将需要某种方法来防止无限循环。

我在编写的应用程序中对多个图表做了类似的事情。。。我只是简单地将一个图表的DomainAxis设置为另一个图表中的DomainAxis,即它们都引用单个DomainAxis。

JFreeChart chart1 = ChartFactory.createXYLineChart();
JFreeChart chart2 = ChartFactory.createXYLineChart();
XYPlot plot1 = chart1.getXYPlot();
XYPlot plot2 = chart2.getXYPlot();
plot2.setDomainAxis(plot1.getDomainAxis());

现在,当我放大chart1时,两个图表都显示相同的缩放域。

注意,我通过在图表外进行数据篡改来确保域在图表中的大小/长度相同。

使用JFreeChartCombinedXYPlotDemo1演示的CombinedDomainXYPlot是一种方法。

如果您在此页面上使用备用解决方案("只需将一个图表的DomainAxis设置为另一个图表中的DomainAxis"),则只有当两个图表上的点具有相同的起始和结束xAxis值时(可能还有其他问题),此解决方案才会起作用。

相关内容

  • 没有找到相关文章

最新更新