【问题标题】:JFreeChart Combined XY Plot with Time SeriesJFreeChart 结合了时间序列的 XY 图
【发布时间】:2012-01-24 22:10:10
【问题描述】:

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

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 年。

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

只要我通过构造将两个地块结合起来:

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 年之间的日历日期)?

【问题讨论】:

  • 请编辑您的问题以更正标识符并提供一个 sscce 来显示您所描述的问题。

标签: jfreechart time-series


【解决方案1】:

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

当我初始化CombinedDomainXYPlot时,它默认分配numberAxis,并且不使用子图已经定义的轴。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-11
    相关资源
    最近更新 更多