代码之家  ›  专栏  ›  技术社区  ›  Bruno Vignola

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

  •  1
  • Bruno Vignola  · 技术社区  · 7 年前

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

    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 回复  |  直到 7 年前
        1
  •  4
  •   trashgod    7 年前

    • 更改 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