【问题标题】:JFreeChart Link AxesJFreeChart 链接轴
【发布时间】:2012-08-26 07:47:22
【问题描述】:

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

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

【问题讨论】:

    标签: java jfreechart time-series zooming axes


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

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

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

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

            猜你喜欢
            • 2012-12-12
            • 1970-01-01
            • 1970-01-01
            • 2014-07-17
            • 2011-01-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多