Ось Y в формате JFreeChart для отображения значений в Power

1

Как отформатировать ось Y, чтобы показать значения как 5 * 10 ^ 5, 1 * 10 ^ 6, 2 * 10 ^ 6... вместо 500 000,1 000 000, 2 000 000... и которые делятся на 5 или 10?

Изображение 174551

Теги:
graph
jfreechart

1 ответ

1
Лучший ответ

Кажется, что работает LogAxis с LogAxis по умолчанию. Этот связанный пример использует целые единицы тика.

Изображение 174551

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 /questions/1111242/logarithmic-axis-labelsticks-customization/3718691#3718691
 */
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();
            }
        });
    }
}
  • 0
    спасибо за ваш ответ, возможно ли показать значение мощности как 10 power 3 вместо 10 ^ 3?
  • 1
    Если вы имеете в виду, как 10³, вы могли бы попробовать это ?
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню