【发布时间】:2011-10-21 17:39:33
【问题描述】:
我有一个 StackedXYAreaChart,如下所示:
如何格式化 Y 轴单位,以便它们均匀分布并以特定间隔显示?例如,我不想以 1 为增量显示单位(例如 0, 1, 2, 3, ... 100),而是希望以 10 或 25 为增量显示单位(例如 0, 25, 50, 75, 100)。谢谢!
【问题讨论】:
标签: java jfreechart
我有一个 StackedXYAreaChart,如下所示:
如何格式化 Y 轴单位,以便它们均匀分布并以特定间隔显示?例如,我不想以 1 为增量显示单位(例如 0, 1, 2, 3, ... 100),而是希望以 10 或 25 为增量显示单位(例如 0, 25, 50, 75, 100)。谢谢!
【问题讨论】:
标签: java jfreechart
我找到了解决我自己问题的方法。我正在使用 CustomTickUnit 格式化数字并将单位添加到后缀,例如1000000 变为 1 GB。
我使用以下代码设置我的刻度单位,这些代码将它们均匀地隔开并适当地格式化它们以便它们非常易读:
public void setupRangeAxis(NumberAxis rangeAxis) {
final TickUnits standardUnits = new TickUnits();
standardUnits.add(new CustomTickUnit(1));
standardUnits.add(new CustomTickUnit(10));
standardUnits.add(new CustomTickUnit(100));
standardUnits.add(new CustomTickUnit(1000)); // Kilo
standardUnits.add(new CustomTickUnit(10000));
standardUnits.add(new CustomTickUnit(100000));
standardUnits.add(new CustomTickUnit(1000000)); // Mega
standardUnits.add(new CustomTickUnit(10000000));
standardUnits.add(new CustomTickUnit(100000000));
standardUnits.add(new CustomTickUnit(1000000000)); // Giga
standardUnits.add(new CustomTickUnit(10000000000L));
standardUnits.add(new CustomTickUnit(100000000000L));
standardUnits.add(new CustomTickUnit(1000000000000L)); // Tera
standardUnits.add(new CustomTickUnit(10000000000000L));
standardUnits.add(new CustomTickUnit(100000000000000L));
standardUnits.add(new CustomTickUnit(1000000000000000L)); // Peta
standardUnits.add(new CustomTickUnit(10000000000000000L));
standardUnits.add(new CustomTickUnit(100000000000000000L));
standardUnits.add(new CustomTickUnit(1000000000000000000L)); // Exa
rangeAxis.setStandardTickUnits(standardUnits);
}
【讨论】:
CategoryPlot plot = chart.getCategoryPlot();
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setTickUnit(new NumberTickUnit(300));
【讨论】:
假设NumberAxis,将刻度单位设置为25。有一个相关的例子here。
axis.setTickUnit(new NumberTickUnit(25));
【讨论】: