【问题标题】:JFreeChart format Y-axis to show values in PowerJFreeChart 格式 Y 轴以在 Power 中显示值
【发布时间】:2014-03-17 05:27:30
【问题描述】:

如何格式化 y 轴以将值显示为 5*10^5、1*10^6、2*10^6... 而不是 500,000,1,000,000、2,000,000... 并且可以被 5 整除或10 点?

【问题讨论】:

    标签: java graph jfreechart


    【解决方案1】:

    带有默认刻度单位的LogAxis 似乎可以工作。这个相关的example 使用整数刻度单位。

    import java.awt.Dimension;
    import java.awt.EventQueue;
    import javax.swing.JFrame;
    import org.jfree.chart.ChartPanel;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.axis.LogAxis;
    import org.jfree.chart.axis.NumberAxis;
    import org.jfree.chart.plot.XYPlot;
    import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
    import org.jfree.data.xy.XYSeries;
    import org.jfree.data.xy.XYSeriesCollection;
    
    /**
     * @see https://stackoverflow.com/a/22450677/230513
     * @see https://stackoverflow.com/a/10353270/230513
     */
    public class Test {
    
        private static final int N = 7;
    
        private void display() {
            XYSeries series = new XYSeries("Series");
            for (int i = 0; i <= N; i++) {
                series.add(i, Math.pow(10, i));
            }
            NumberAxis xAxis = new NumberAxis("X");
            xAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
            LogAxis yAxis = new LogAxis("Y");
            XYPlot plot = new XYPlot(new XYSeriesCollection(series),
                xAxis, yAxis, new XYLineAndShapeRenderer(true, false));
            JFreeChart chart = new JFreeChart(
                "Chart", JFreeChart.DEFAULT_TITLE_FONT, plot, false);
    
            JFrame f = new JFrame("Test");
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.add(new ChartPanel(chart) {
    
                @Override
                public Dimension getPreferredSize() {
                    return new Dimension(480, 240);
                }
            });
            f.pack();
            f.setLocationRelativeTo(null);
            f.setVisible(true);
        }
    
        public static void main(String[] args) {
            EventQueue.invokeLater(new Runnable() {
    
                @Override
                public void run() {
                    new Test().display();
                }
            });
        }
    }
    

    【讨论】:

    • 感谢您的回答,是否可以将功率值显示为 10 次方 3 而不是 10^3?
    • 如果你的意思是像 10³,你可以试试this?
    • 能否请您将代码更新为属性字符串,我无法弄清楚如何使用它。谢谢!
    • 对不起,我也没用过,你可能看herehere。您还可以使用 mctre 提出一个新问题,表明您的预期用途。
    • @user3215852:我为轴标签找到了这个example[,但我不确定刻度标签本身。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    • 2019-11-27
    相关资源
    最近更新 更多