2

我创建了一个带有两个独立的独立 JFree 图表的框架(以 2x1 网格布局保存)。顶部图表显示 Canlestick 图表,底部显示时间序列图。我想做的是链接两个图表显示的 X 轴,这样当我放大一个图表时,另一个图表会放大到相应的时间段。

这可能吗?如果可以,你能给我举个例子吗

4

4 回答 4

2

你需要的叫做CombinedDomainXYPlot. 您需要创建一个组合图并将所有需要链接的图放在那里,而不是创建独立的 JFreeChart 对象。

于 2012-12-30T01:16:49.120 回答
1

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

于 2012-08-31T14:50:26.977 回答
0

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

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

plot2.setDomainAxis(plot1.getDomainAxis());

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

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

于 2014-05-03T09:58:57.223 回答
0

使用JFreeChartCombinedXYPlotDemo1演示的 CombinedDomainXYPlot 是可行的方法。

如果您使用此页面上的替代解决方案(“只需将一个图表的 DomainAxis 设置为另一个图表的 DomainAxis”),这仅适用于两个图表上的点具有相同的开始和结束 xAxis 值(可能还有其他问题) .

于 2017-08-06T21:45:12.630 回答