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

JFreeChart displaying three dots (...) in place of the values on the X axis

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

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 轴上没有足够的 space 并显示三个点 (...) 代替值。这很奇怪,我想有多少分就多少分(例如 1000,有一个好的 分辨率),但标签只显示这些点的一个子集,所以我不 运行 出 od space:

例如点数:1000、1001、1002、...、2000(1000 点)

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

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

您可能需要结合几种方法:

  • 按照建议更改 CategoryLabelPositions here

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