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

标签 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 空间:

例如积分: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()

image

关于java - JFreeChart 显示三个点 (...) 代替 X 轴上的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45327114/

相关文章:

Java - GUI、面板和数据访问

java - 如何在甘特图中显示每个任务的信息

python - matplotlib:如何将多个条与线组合

javascript - 在 dc 图表库中限制折线图放大最多小时

javascript - Chart.js stepSize 不适用于日期的折线图

java - H2 嵌入式数据库在 spring boot 测试期间未获取属性

java - 如何检查用户输入的路径是否正确?

java - JFreeChart - 具有垂直 DateAxis 的条形图

java - 如何使用 netbeans IDE 添加 jFreeChart 库?

java - 使用 GWT 打印屏幕