gpt4 book ai didi

java - 如何在jfree中从log 10切换到log 2

转载 作者:行者123 更新时间:2023-12-02 03:54:16 25 4
gpt4 key购买 nike

我正在使用 JFree 生成图表。下面是图片供您引用。从图像中可以看出,当前比例基于 10,因此 x 轴比例有 10,100,1000。是否可以将其更改为 log 2。因此,在 log 2 的情况下,点将可见 2、4、8、16、32、64 等。 LogarithmicAxis.java 类用于渲染 x 轴。

如果可以的话请告诉我

enter image description here

下面的代码生成 log 2 比例,但我无法垂直设置 x 轴点,这对我来说非常重要。

public class TestHello {

/** @see http://stackoverflow.com/a/10353270/230513 */
private static void createFrame() {
int N=22;
XYSeries series = new XYSeries("Series");
for (int i = 0; i <= N; i++) {
System.out.println(Math.pow(2, i));
Random r = new Random();
double randomInt = r.nextInt(100) + 1;
series.add(Math.pow(2, i),randomInt);
}


NumberAxis yAxis = new NumberAxis("Y");
yAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());

LogAxis xAxis = new LogAxis("X");
xAxis.setBase(2);
xAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
xAxis.setVerticalTickLabels(true);




JFreeChart chart = ChartFactory.createXYLineChart(
"Text", "x", "y", new XYSeriesCollection(series),
PlotOrientation.VERTICAL, true, true, false);
final XYPlot plot = chart.getXYPlot();
plot.setBackgroundPaint(Color.WHITE);
plot.setDomainAxis(xAxis);
plot.setRangeAxis(yAxis);

final Marker start = new ValueMarker(60.0);

XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();
renderer.setLegendLine(new Line2D.Double(-20.0D, 0.0D, 20.0D, 0.0D));

Shape square = new Rectangle2D.Double(-2.0, -2.0, 3.0, 3.0);
renderer.setSeriesShape(0, square);
plot.setRenderer(renderer);
plot.addRangeMarker(start);

JFrame frame = new JFrame("LogAxis Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(new ChartPanel(chart));
frame.pack();
frame.setVisible(true);
}

public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {

@Override
public void run() {
createFrame();
}
});
}

}

最佳答案

尝试使用 LogAxis 类而不是 LogarithmicAxis 类(由于历史原因,有两个)并调用 axis.setBase(2.0) 当您设置轴时。

关于java - 如何在jfree中从log 10切换到log 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35631087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com