JFreeChart将XY图与时间序列相结合

alr*_*rts 6 time-series jfreechart

我想放置两个时间序列图表,它们共享相同的时域轴,彼此之间有多个数据集.

chart1 = ChartFactory.createTimeSeriesChart("", "", "", tsc1, true, true, false);
subplot1 = chartCOT.getXYPlot();
...
chart2 = ChartFactory.createTimeSeriesChart("", "", "", tsc2, true, true, false);
subplot2 = chartCOT.getXYPlot();
...
Run Code Online (Sandbox Code Playgroud)

其中tsc1和tsc2是包含多个TimeSeries的TimeSeriesCollection数据集,这两个TimeSeries具有大约5年的相同日期范围.

当我单独绘制它们时,没有问题,即时域轴根据需要反映日历日期.

一旦我通过构造将两个图组合在一起:

CombinedDomainXYPlot plot = new CombinedDomainXYPlot();
plot.setGap(10.0);
plot.add(subplot1, 2);
plot.add(subplot2, 1);
chart[ch] = new JFreeChart("label", null, plot, true);
Run Code Online (Sandbox Code Playgroud)

根据需要,图表显示在彼此之上,但时间轴不再显示日历日期,而是显示0,250'000'000'000,500'000'000'000等值,因为它们呈现的是毫秒.此外,时间范围延伸到左侧约30年,并且绘图数据(从2006年开始)在最右侧开始并因此被非常压缩.

如何保留域轴的正确表示(2006年和2012年之间的日历日期)?

alr*_*rts 8

我终于找到了自己解决问题的方法:

初始化时CombinedDomainXYPlot,它会numberAxis默认分配一个,并且不使用已由子图定义的轴.

因此我必须告诉plot域轴是一个时间序列:

ValueAxis domainAxis = new DateAxis("");
plot.setDomainAxis(domainAxis);
Run Code Online (Sandbox Code Playgroud)