Java JFreeChart链接轴

Java JFreeChart链接轴,java,jfreechart,time-series,zooming,axes,Java,Jfreechart,Time Series,Zooming,Axes,我用两个独立的JFree图表创建了一个框架(以2x1网格布局保存)。顶部的图表显示一个Canlestick图表,底部是一个时间序列图。我想做的是链接两个图表显示的X轴,这样当我放大一个图表时,另一个图表将缩放到相应的时间段 这可能吗?如果是这样的话,你能给我举个例子,使用JFreeChart\addChangeListener()在两个图表中添加一个监听器,并在ChartChangeListener\chartChanged()内同步DomainAxis,你需要某种方法来防止无限循环。你需要的是

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


这可能吗?如果是这样的话,你能给我举个例子,使用
JFreeChart\addChangeListener()
在两个图表中添加一个监听器,并在
ChartChangeListener\chartChanged()
内同步
DomainAxis
,你需要某种方法来防止无限循环。

你需要的是
CombinedDomainXYPlot
。与创建独立的JFreeChart对象不同,您需要创建一个组合绘图,并将所有绘图链接到其中。

我在编写的应用程序中对多个图表做了类似的操作。。。我只需将一个图表的DomainAxis设置为另一个图表的DomainAxis,即它们都指向单个DomainAxis

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

plot2.setDomainAxis(plot1.getDomainAxis());
现在,当我放大图表1时,两个图表显示相同的缩放域


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

使用CombinedDomainXYPlot(如所示)是一种方法

如果使用此页面上的替代解决方案(“只需将一个图表的DomainAxis设置为另一个图表的DomainAxis”),则只有在两个图表上的点具有相同的起点和终点xAxis值(可能还有其他问题)时,此解决方案才会起作用