JFreeChart - CategoryAxis 步骤

发布于 2024-12-11 20:02:47 字数 1018 浏览 1 评论 0原文

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

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;
    }

并创建条形图:

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

我没有找到这个。

有什么帮助吗?

I have a method for generating dataset:

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;
    }

and create 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?
                );

Array of doubles hold histogram data, so there are 255 values.

When I display chart there are labels for
all values from 0 - 255 on x axis. I want display only labels for several indexes (for example: 0, 10, 20, 30). I saw that in RangeAxis there is setStandardTickUnits method. But in CategoryAxis:

CategoryAxis domainAxis = plot.getDomainAxis();

I didn't find this.

Any help?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

静赏你的温柔 2024-12-18 20:02:47

您可以尝试如下,

NumberAxis vn = (NumberAxis) plot.getRangeAxis();   
vn.setTickUnit(new NumberTickUnit(10d)); 
vn.setRange(0D, Math.ceil(factor * MAX_VALUE));

--即只需将 plot.getRangeAxis() 转换为 NumberAxis 类型即可。

You can try as follows,

NumberAxis vn = (NumberAxis) plot.getRangeAxis();   
vn.setTickUnit(new NumberTickUnit(10d)); 
vn.setRange(0D, Math.ceil(factor * MAX_VALUE));

--that is you just need cast plot.getRangeAxis() to NumberAxis type.

流年里的时光 2024-12-18 20:02:47

我有同样的问题。我创建了实现“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));

I had same problem. I created new class implementing 'Comparable', and use it as last parameter in addValue(...). You can create something like

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; }
}

And then instead of

dataset.addValue(arr[i], "mySeries", new Integer(i));

use

dataset.addValue(arr[i], "mySeries", new MyCategory(i));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文