【问题标题】:JFreeChart axis label in Hours以小时为单位的 JFreeChart 轴标签
【发布时间】:2015-07-17 15:37:50
【问题描述】:

我有数据,例如(1,3600), (2,4400), ... (33,15000) 在哪里 (1,3000) -> 1 是一个数字 -> 3600 是秒

如果放入图表中,轴将显示“秒”为数字。 我设置了一个代码,以 1 小时间隔显示轴标签。

// Create an NumberAxis
NumberAxis xAxis = new NumberAxis();
xAxis.setTickUnit(new NumberTickUnit(3600));

// Assign it to the chart
xyPlot.setDomainAxis(xAxis);

所以现在轴标签是:0 ... 3600 ... 7200 ... 10.800 ...

如何使轴标签以小时为单位显示? (0 ... 1 ... 2 ... 3 ...)

【问题讨论】:

    标签: java jfreechart axis-labels


    【解决方案1】:

    一种方法是将数据缩放 1000 以表示 epoch 的毫秒数。然后你可以使用SimpleDateFormat 和合适的TimeZone 来获得想要的效果。

    DateAxis axis = new DateAxis("Hour");
    SimpleDateFormat format = new SimpleDateFormat("H");
    format.setTimeZone(TimeZone.getTimeZone("GMT"));
    axis.setDateFormatOverride(format);
    

    时间限制在 0 到 23 之间,知道如何克服这个问题吗?

    您可以尝试其他格式,例如“D:H”。或者,按 1/3600 缩放以表示小时,并使用带有整数刻度单位的 NumberAxis

    NumberAxis axis = new NumberAxis();
    axis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
    

    【讨论】:

    • 一个问题,时间只限制在0-23之间,有什么办法克服这个问题吗?
    • 我已经在上面详细说明了。
    猜你喜欢
    • 2011-01-30
    • 2014-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    • 2022-07-20
    相关资源
    最近更新 更多