设置Plot2DPanel对数刻度时X轴刻度与网格缺失问题求助
问题原因
jMathPlot的Plot2DPanel切换对数刻度后刻度和网格消失是两个常见原因导致:
- 先添加数据再切换对数刻度时,自动计算的轴范围可能出现异常,或是默认仅展示10的整数次幂刻度,若数据区间内这类刻度数量极少就会看起来刻度完全消失
- 切换对数刻度后轴的网格、刻度显示会被默认重置为隐藏状态
解决步骤
- 调整代码顺序,先设置对数刻度再添加绘图数据,避免范围计算冲突
- 手动指定X轴的取值范围,确保最小值大于0,完全覆盖你用到的X数据区间
- 显式开启X轴的刻度、网格显示,按需开启非10整数次幂的刻度标签展示
修改后可正常运行的代码
public class Graficas2D { public static void main(String[] args) { double[] x = {125, 250, 500, 1000}; double[] y = {.2, .34, .67, .5}; Plot2DPanel grafico = new Plot2DPanel("SOUTH"); // 先设置X轴(索引0对应X轴)为对数刻度 grafico.setAxisScale(0, "LOG"); // 手动指定X轴范围,最小值大于0,覆盖所有X数据 grafico.setAxisBounds(0, 100, 1200); // 显式开启X轴刻度、网格显示 grafico.getAxis(0).setTicksVisible(true); grafico.getAxis(0).setGridVisible(true); // 开启后可显示125、250等非10整数次幂的刻度标签,不需要可删除 grafico.getAxis(0).setLightLabelVisible(true); // 最后添加折线数据 grafico.addLinePlot("Test", x, y); JFrame frame = new JFrame("Mi grafico"); frame.setSize(500, 500); frame.setContentPane(grafico); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }
内容的提问来源于stack exchange,提问作者Agustín Arias
相关产品推荐
相关产品推荐

