java - 在 jfreechart TimeSeriesCollection 中如何显示仅具有值的日期?

标签 java jfreechart

public class Example {
    public static void main(String args[]){
        /*creating timeSeriesCollection*/
        TimeSeriesCollection dataset = new TimeSeriesCollection();
        TimeSeries timeSeries1 = new TimeSeries("Sample 1");
        timeSeries1.add(new Day(8,4, 2012), 7.0);
        timeSeries1.add(new Day(19,4, 2012), 5.0);
        dataset.addSeries(timeSeries1);
        /*Creating the chart*/
        JFreeChart chart = ChartFactory.createTimeSeriesChart("Population","Date","Population",dataset,true,true,false);
        /*Altering the graph */
        XYPlot plot = (XYPlot) chart.getPlot(); 
    plot.setAxisOffset(new RectangleInsets(5.0, 10.0, 10.0, 5.0));  
    plot.setDomainCrosshairVisible(true);
    plot.setRangeCrosshairVisible(true);
    XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer)plot.getRenderer();
    renderer.setBaseShapesVisible(true);
    renderer.setBaseShapesFilled(true);
    NumberAxis numberAxis = (NumberAxis)plot.getRangeAxis();        
    numberAxis.setRange(new Range(0,10));   
    DateAxis axis = (DateAxis) plot.getDomainAxis();
    axis.setDateFormatOverride(new SimpleDateFormat("dd-MM-yyyy"));
    axis.setAutoTickUnitSelection(false);
    axis.setVerticalTickLabels(true);
        /* Displaying the chart*/           
        ChartFrame frame = new ChartFrame("Test", chart);
        frame.pack();
        frame.setVisible(true);
    }   
}

我已经编写了上面的代码,它工作得很好,但是在渲染图表时,它显示的日期没有值。它在 y 轴上显示 9/4/1210/4/201218/4/2012 等日期,但没有一个值。如何删除没有值(value)的日期。为什么它会这样?

谁能帮帮我吗?

最佳答案

试试这个:

  public class Example1 {
    public static void main(String args[]){

        DefaultKeyedValues data = new DefaultKeyedValues();
        data.addValue("8/4/2012" ,7.0);
        data.addValue("19/04/2012",5.0);

        CategoryDataset dataset = DatasetUtilities.createCategoryDataset("Population", data);
        JFreeChart chart = ChartFactory.createBarChart("Population","Date","Population",dataset,PlotOrientation.VERTICAL,true,true,false);
        ChartFrame frame = new ChartFrame("Test", chart);

        //Switch from a Bar Rendered to a LineAndShapeRenderer so the chart looks like an XYChart
        LineAndShapeRenderer renderer = new LineAndShapeRenderer();
        renderer.setBaseLinesVisible(false); //TUrn of the lines
        CategoryPlot plot = (CategoryPlot) chart.getPlot();
        plot.setRenderer(0, renderer);

        NumberAxis numberAxis = (NumberAxis)plot.getRangeAxis();        
        numberAxis.setRange(new Range(0,10));   

        frame.pack();
        frame.setVisible(true);
    }   
}

enter image description here

不要使用 TimeSeriesChart,而是使用 @Dirk 建议的 CategoryDataSet,然后切换到 LineAndShapeRenderer

关于java - 在 jfreechart TimeSeriesCollection 中如何显示仅具有值的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12297851/

相关文章:

java - 如何将大 zip 文件分解为更小的 zip 文件?

android - 需要在 JFreeChart 中动态设置列标签

java - 创建图表后如何更改图表类型?

java - 如何将 Java 日期字符串/对象转换为 JFreeChart 日期格式?

java.lang.ClassFormatError : Duplicate method name&signature in class file 错误

java - slf4j 警告相同的绑定(bind)是重复的

java - 如何在 Guava 中制作一个 "real"不可变的日期对象列表

java - 重构异常处理

colors - 如何更改 JFreeChart 甘特图中特定子任务的颜色?

java - JFreeChart - 不完全可见的折线图