JFreeChart 结合时间序列的 XY 图

标签 jfreechart time-series

我想将两个时间序列图表放置在彼此之上共享相同的时域轴,都具有多个数据集。

chart1 = ChartFactory.createTimeSeriesChart("", "", "", tsc1, true, true, false);
subplot1 = chartCOT.getXYPlot();
...
chart2 = ChartFactory.createTimeSeriesChart("", "", "", tsc2, true, true, false);
subplot2 = chartCOT.getXYPlot();
...

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

当我单独绘制它们时,没有问题,即时域轴根据需要反射(reflect)日历日期。

一旦我通过构造将两个地块结合起来:
CombinedDomainXYPlot plot = new CombinedDomainXYPlot();
plot.setGap(10.0);
plot.add(subplot1, 2);
plot.add(subplot2, 1);
chart[ch] = new JFreeChart("label", null, plot, true);

图表根据需要显示在彼此之上,但时间轴不再显示日历日期,而是显示 0、250'000'000'000、500'000'000'000 等值,因为它们显示的是毫秒。此外,时间范围向左侧扩展了大约 30 年,地块数据(从 2006 年开始)从最右侧开始,因此被非常压缩。

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

最佳答案

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

当我初始化 CombinedDomainXYPlot ,它分配一个 numberAxis默认情况下,不使用子图已经定义的轴。

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

ValueAxis domainAxis = new DateAxis("");
plot.setDomainAxis(domainAxis);

关于JFreeChart 结合时间序列的 XY 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8994986/

相关文章:

python - Matplotlib 热图标签

r - 使用 R 的 SARIMAX 模型的数值方法

Python:根据日期时间逐行扩展数据框

java - JFreeChart + JRuby - 填充域轴上两点之间的区域

java - 关于在 TableXYDataset 中添加系列

用于显示容器内部件的 Java 图表库

java - JFreeChart - 在同一 JPanel 中添加多个 ChartPanel

java - 时间序列预测 encog 3 java 从 CSV 读取

R:子集一个动物园对象?

JFreechart 在刻度刻度上呈现时间序列