JFreeChart显示三个点(...)代替X轴上的值

时间:2017-07-26 12:32:54

标签: java jfreechart linechart

我正在尝试绘制一个简单的折线图,几乎一切都很好,我用这样一个简单的代码填充我的数据集:

DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(-10 , "S21" , "1000" );
dataset.addValue(-20 , "S21" , "1001" );
dataset.addValue(-25 , "S21" , "1002" );
dataset.addValue(-30 , "S21" , "1003" );
dataset.addValue(-25 , "S21" , "1004" );
...

然后我创建折线图:

lineChart = ChartFactory.createLineChart(
    "S21",
    "Frequency (MHz)",
    "Value (db)",
    dataset,
    PlotOrientation.VERTICAL,
    true,
    true,
    false);

我在X轴上的值为1000 1001 1002 ......等等。无论如何我注意到,如果我添加更多点,jfreechart在x轴上没有足够的空间并显示三个点(... )取代价值观。这很奇怪,我想拥有尽可能多的积分(例如1000,有一个好的 分辨率),但标签只显示这些点的子集,所以我没有用完od空间:

E.g。积分:1000,1001,1002,......,2000(1000分)

标签:1000,1100,1200,...,1900,2000(10个标签)

有可能吗?我在网上寻找解决方案,但没有找到任何有用的东西。

1 个答案:

答案 0 :(得分:3)

您可能必须结合以下几种方法:

  • 按照建议的here更改CategoryLabelPositions

    CategoryAxis domainAxis = plot.getDomainAxis();
    domainAxis.setCategoryLabelPositions(
        CategoryLabelPositions.createUpRotationLabelPositions(Math.PI / 2.0));
    
  • 根据建议here调整图表的大小。

    ChartPanel piePanel = new ChartPanel(lineChart) {
        @Override
        public Dimension getPreferredSize() {
            return new Dimension(640, 480);
        }
    };
    
  • 或者,根据类别的数量,使用SlidingCategoryDataset,如建议的here

  • 可选地,如果类别形成连续域,则切换到XY图,例如, ChartFactory.createXYLineChart()

image