【问题标题】:JFreeChart and Y-axis UnitsJFreeChart 和 Y 轴单位
【发布时间】:2011-10-21 17:39:33
【问题描述】:

我有一个 StackedXYAreaChart,如下所示:

如何格式化 Y 轴单位,以便它们均匀分布并以特定间隔显示?例如,我不想以 1 为增量显示单位(例如 0, 1, 2, 3, ... 100),而是希望以 10 或 25 为增量显示单位(例如 0, 25, 50, 75, 100)。谢谢!

【问题讨论】:

    标签: java jfreechart


    【解决方案1】:

    我找到了解决我自己问题的方法。我正在使用 CustomTickUnit 格式化数字并将单位添加到后缀,例如1000000 变为 1 GB

    我使用以下代码设置我的刻度单位,这些代码将它们均匀地隔开并适当地格式化它们以便它们非常易读:

    public void setupRangeAxis(NumberAxis rangeAxis) {
      final TickUnits standardUnits = new TickUnits();
      standardUnits.add(new CustomTickUnit(1));
      standardUnits.add(new CustomTickUnit(10));
      standardUnits.add(new CustomTickUnit(100));
      standardUnits.add(new CustomTickUnit(1000)); // Kilo
      standardUnits.add(new CustomTickUnit(10000));
      standardUnits.add(new CustomTickUnit(100000));
      standardUnits.add(new CustomTickUnit(1000000)); // Mega
      standardUnits.add(new CustomTickUnit(10000000));
      standardUnits.add(new CustomTickUnit(100000000));
      standardUnits.add(new CustomTickUnit(1000000000)); // Giga
      standardUnits.add(new CustomTickUnit(10000000000L));
      standardUnits.add(new CustomTickUnit(100000000000L));
      standardUnits.add(new CustomTickUnit(1000000000000L)); // Tera
      standardUnits.add(new CustomTickUnit(10000000000000L));
      standardUnits.add(new CustomTickUnit(100000000000000L));
      standardUnits.add(new CustomTickUnit(1000000000000000L)); // Peta
      standardUnits.add(new CustomTickUnit(10000000000000000L));
      standardUnits.add(new CustomTickUnit(100000000000000000L));
      standardUnits.add(new CustomTickUnit(1000000000000000000L)); // Exa
      rangeAxis.setStandardTickUnits(standardUnits);
    }
    

    【讨论】:

      【解决方案2】:
      CategoryPlot plot = chart.getCategoryPlot();
      
      NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
      
      rangeAxis.setTickUnit(new NumberTickUnit(300));
      

      【讨论】:

      • 您能否为您的答案提供一些解释?谢谢!
      【解决方案3】:

      假设NumberAxis,将刻度单位设置为25。有一个相关的例子here

      axis.setTickUnit(new NumberTickUnit(25));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-06
        • 2018-02-10
        • 2011-10-20
        • 1970-01-01
        • 2011-01-30
        • 1970-01-01
        • 2015-07-17
        相关资源
        最近更新 更多