我有一种生成数据集的方法:
private CategoryDataset createDataset(double[] arr,
String seriesName) {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
for (int i = 0; i < arr.length; i++) {
dataset.addValue(arr[i], "mySeries", new Integer(i));
}
return dataset;
}
并创建BarChart:
JFreeChart chart = ChartFactory.createBarChart(chartTitle,
xaxis, // domain axis label
yaxis, // range axis label
dataset, // data
orientation, // orientation
true, // include legend
true, // tooltips?
false // URLs?
);
双精度数组保存直方图数据,因此有255个值。
当我显示图表时,有标签 x轴上的所有值均为0 - 255。我想只显示几个索引的标签(例如:0,10,20,30)。我在RangeAxis中看到有setStandardTickUnits方法。但在CategoryAxis中:
CategoryAxis domainAxis = plot.getDomainAxis();
我没有找到这个。
任何帮助?
答案 0 :(得分:1)
您可以尝试如下,
NumberAxis vn = (NumberAxis) plot.getRangeAxis();
vn.setTickUnit(new NumberTickUnit(10d));
vn.setRange(0D, Math.ceil(factor * MAX_VALUE));
- 您只需要将plot.getRangeAxis()
转换为NumberAxis类型。
答案 1 :(得分:0)
我有同样的问题。我创建了实现'Comparable'的新类,并将其用作addValue(...)中的最后一个参数。您可以创建类似
的内容class MyCategory implements Comparable<MyCategory> {
Integer value;
String stValue;
MyCategory(int val) {
value = val;
stValue = val%10==0?""+val:"";}
public int compareTo(MyCategory key) { return value.compareTo(key.value); }
public String toString() { return stValue; }
}
然后而不是
dataset.addValue(arr[i], "mySeries", new Integer(i));
使用
dataset.addValue(arr[i], "mySeries", new MyCategory(i));