Java JFreeChart:在图表中设置最小X刻度间隔

Java JFreeChart:在图表中设置最小X刻度间隔,java,jfreechart,Java,Jfreechart,我需要在图表中设置最小X刻度间隔。我有一个包含1000个条目的数据集,即,,…,。在数据集中,X值之间的间隔等于5。在图表中,我想将X记号间隔设置为100 我使用此代码,但它不起作用: NumberAxis range = (NumberAxis)plot.getRangeAxis(); range.setTickUnit(new NumberTickUnit(100)); 以下是我的代码片段: private JFreeChart createChart(Cat

我需要在图表中设置最小X刻度间隔。我有一个包含1000个条目的数据集,即
,,…,
。在数据集中,X值之间的间隔等于5。在图表中,我想将X记号间隔设置为100

我使用此代码,但它不起作用:

    NumberAxis range = (NumberAxis)plot.getRangeAxis();  
    range.setTickUnit(new NumberTickUnit(100)); 
以下是我的代码片段:

    private JFreeChart createChart(CategoryDataset dataset) 
    {

        final JFreeChart chart = ChartFactory.createAreaChart(
            this.title,
            "Time", 
            "Net demand", 
            dataset,
            PlotOrientation.VERTICAL,
            true,
            true,
            false
        );

        Title t = new TextTitle(this.subtitle);
        chart.addSubtitle(t);

        int transparency = 95;
        Color c = new Color(1, 158, 115, transparency);
        final CategoryPlot plot = chart.getCategoryPlot();
        CategoryItemRenderer renderer = new CustomRenderer(c);
        renderer.setSeriesOutlinePaint(0, Color.black);
        renderer.setSeriesOutlineStroke(0, new BasicStroke(0.5f));
        renderer.setSeriesPaint(0,c);
        plot.setRenderer(renderer);

        NumberAxis range = (NumberAxis)plot.getRangeAxis();  
        range.setTickUnit(new NumberTickUnit(60));  

        return chart;    
    }

您已经为范围轴设置了刻度单位,即JFreeChart中的y轴。对于x轴,您需要域轴

NumberAxis xAxis = (NumberAxis) plot.getDomainAxis();  
xAxis.setTickUnit(new NumberTickUnit(60));

范围术语来自将一组域值映射到一组范围值的函数。事后看来,对于大多数人来说,使用getXAxis()和getYAxis()作为方法名会更清楚……对于JFreeChart 2,我可能会更改它。

谢谢。在这种情况下,我收到编译错误:无法从CategoryAxis强制转换到NumberAxis我是否需要覆盖NumberAxis中的refreshTicks()?不,我没有注意到您使用的是CategoryPlot,我假设它是XYPlot。由于您的x值是数值,您应该尝试使用XYAreaChart。@DavidGilbert您能在这个问题上提供帮助吗?