JFreeChart - CategoryAxis步骤

时间:2011-10-23 08:58:37

标签: java jfreechart

我有一种生成数据集的方法:

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();

我没有找到这个。

任何帮助?

2 个答案:

答案 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));