【问题标题】:JFreeChart displaying three dots (...) in place of the values on the X axisJFreeChart 显示三个点 (...) 代替 X 轴上的值
【发布时间】:2017-07-26 12:32:54
【问题描述】:

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

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 个标签)

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

【问题讨论】:

    标签: java jfreechart linechart


    【解决方案1】:

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

    • 按照建议的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()

    【讨论】:

    • 非常感谢,有了折线图我其实可以只玩大小或旋转标签;但我可以用 XY 折线图管理我的情况。它似乎工作正常,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-02
    • 2012-01-09
    相关资源
    最近更新 更多