【问题标题】:JFreeChart domain axis with multiple (but sequential) data series具有多个(但顺序)数据系列的 JFreeChart 域轴
【发布时间】:2011-08-03 21:55:54
【问题描述】:

我正在尝试显示在特定时间段具有不同颜色的图。

我设法做到这一点的唯一方法是将初始数据系列分成几部分,然后以适当的顺序将它们添加到要绘制的数据集中。例如,如果绘图的默认颜色是蓝色并且我想突出显示两个时间段(例如红色),我将拥有一个由 5 个数据系列组成的数据集:

dataset.add(blue) 初始图

dataset.add(red) 高亮 1

dataset.add(blue) 初始图继续

dataset.add(red) 高亮 2

dataset.add(blue) 初始图继续

连接数据集 5 个部分的域轴上的点是有序的。但是我的域轴有问题。数据系列中的每个点都被适当地实例化(我猜,因为域轴的对齐对于具有相同起点和终点的数据系列来说效果很好)

milliseconds = ts.getTime() + (ts.getNanos() / 1000000);
date = new Date(milliseconds);
intYear = date.getYear() + 1900;
year = new Year(intYear);
intMonth = date.getMonth();
month = new Month(intMonth, year);
intDay = date.getDate();
day = new Day(intDay, month.getMonth(), year.getYear());
hour = new Hour(date.getHours(), day);
minute = new Minute(date.getMinutes(), hour);

tpVal = new TimePeriodValue(minute, watts);
s1.add(tpVal);

此图像的域轴放大了多次。域轴范围从 00:00:00 到 23:59:59 http://i.imgur.com/c7TDY.jpg

有没有办法修复域轴的对齐方式,这样我就可以正确显示绘图而无需放大?

【问题讨论】:

  • 有什么问题?我想我也会这样做。但是,我可能会保持初始数据系列不变,只是在所选数据段的顶部添加不同的颜色。
  • 感谢您的建议。问题是如何修复域轴的对齐方式?在屏幕截图中,域轴至少放大了 4 倍。我希望域轴包含小时数,并且该图无需放大即可完全可见。知道如何解决这个问题吗? :)
  • 对于 NumberAxis 有 autoAdjustRange。我仍然不确定我是否理解:初始范围是 0 到 23:59:59,缩放 4 次后它不会改变?
  • 问题是域轴没有正确显示绘图。例如,如果它只是初始数据系列,则绘图将像这样i.imgur.com/oYJAA.jpg 但是,“切碎”版本不包括域轴中的所有点。
  • 这是我没有放大得到的i.imgur.com/esEc5.jpg

标签: java jfreechart


【解决方案1】:

我找到了解决问题的“方法”。

如上所述将每个数据系列添加到数据集中后,我只是在数据集的末尾添加了原始未切分的数据系列,并且域轴包括所有日期点并对齐正确。

原始未截断的数据系列被“截断”部分重叠,因此根本不可见。这就是它现在的样子。 http://i.imgur.com/Wc893.jpg

我猜这个问题是由于没有数据系列可以覆盖域轴上从开始(第一个数据系列的第一个 timePeriodValue)到结束(最后一个数据系列的最后一个 timePeriodValue)的每个点) 搞砸了 autorange() 或任何负责轴对齐的方法。

虽然我应该让你知道;也许它会帮助其他有类似问题的人。

感谢 toto 建议不要改动原始数据系列。

【讨论】:

    猜你喜欢
    • 2017-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-12
    • 1970-01-01
    相关资源
    最近更新 更多