Я использую JFreeChart
для построения некоторых данных и использую LogAxis
для оси диапазона. Я озадачен тем, почему я не могу заставить мелкие галочки отображаться на оси, но линии сетки выглядят нормально.
Если я не использую LogAxis
, я могу включить и выключить мелкие галочки, используя setMinorTickMarksVisible()
. Пример ниже:
public ChartOne(){
XYSeriesCollection xysc = new XYSeriesCollection();
XYSeries x1 = new XYSeries("Series 1");
x1.add(0.5, 2);
x1.add(1, 2.2);
x1.add(2, 2.4);
x1.add(10, 2.75);
x1.add(30, 4);
x1.add(120, 7);
xysc.addSeries(x1);
XYSeries x2 = new XYSeries("Series 2");
x2.add(0.5, 6);
x2.add(1, 7);
x2.add(2, 8);
x2.add(10, 14);
x2.add(30, 18);
x2.add(120, 22);
xysc.addSeries(x2);
XYDataset xyd = xysc;
JFreeChart chart = ChartFactory.createXYLineChart(
"Data",
"Exposure",
"Percentage uptake",
xyd,
PlotOrientation.VERTICAL,
false,
true,
false
);
LogAxis xAxis = new LogAxis("exposure time");
xAxis.setBase(10);
xAxis.setTickUnit(new NumberTickUnit(1.0, NumberFormat.getInstance(Locale.ENGLISH), 9));
xAxis.setRange(0.1, 200.0);
xAxis.setMinorTickMarksVisible(true); //they don't show up
XYPlot plot = (XYPlot) chart.getPlot();
plot.setDomainAxis(xAxis);
plot.setDomainMinorGridlinesVisible(true);
plot.setDomainGridlinePaint(Color.BLACK);
plot.setDomainMinorGridlinePaint(Color.BLACK);
plot.setBackgroundPaint(Color.WHITE);
ChartPanel chartPanel = new ChartPanel(chart);
add(chartPanel);
}
public static void main(String[] args) {
JFrame frame = new JFrame("Chart");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new ChartOne(), BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
Обратите внимание на текущую ось x (слева) и пример желаемого эффекта оси x с небольшими отметками (справа).