2012-06-13 56 views
0

我想绘制具有以下属性的步骤图: x轴:时间(毫秒)[实际数据包含此值作为双倍值] y轴:另一个存储为整数的值。以毫秒为单位的绘图时间-JFreeChart(步骤图)

我填补了数据集如下:

private XYSeries populateStepChartDataSet(HashMap<Double, Integer> dataGrid){ 
    XYSeries xySeries = new XYSeries("Step Plot", true, true); 

    if(dataGrid != null){ 
     for (Double timeStamp : dataGrid.keySet()) { 
      xySeries.add(timeStamp, dataGrid.get(timeStamp)); 
     } 
    } 

    return xySeries; 
} 

而且在那里我创建的情节部分如下:

 final XYSeriesCollection dataset = new XYSeriesCollection(); 
     dataset.addSeries(populateStepChartDataSet(dspDataGrid)); 

     final JFreeChart chart = ChartFactory.createXYStepChart(
      title, 
      xAxisLabel, yAxisLabel, 
      dataset, 
      PlotOrientation.VERTICAL, 
      true, // legend 
      true, // tooltips 
      false // urls 
     ); 

我想到的是显示时间中的情节毫秒在X轴,但这个价值正在转化为一些奇怪的时间。这是情节的样子enter image description here

有人可以帮我找回ms格式的时间戳为x轴吗?谢谢!

回答

2

它看起来像X轴为格式化为adressing本的日期的一种方式是提供一个NumberFormatOverride

chart后添加以下代码创建:

XYPlot plot = (XYPlot)chart.getPlot(); 
plot.setDomainAxis(0, new NumberAxis()); 
NumberAxis axis = (NumberAxis) plot.getDomainAxis(); 
axis.setNumberFormatOverride(new NumberFormat(){ 

    @Override 
    public StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition pos) { 

    return new StringBuffer(String.format("%f", number)); 
    } 

    @Override 
    public StringBuffer format(long number, StringBuffer toAppendTo, FieldPosition pos) { 
    return new StringBuffer(String.format("%9.0f", number)); 
    } 

    @Override 
    public Number parse(String source, ParsePosition parsePosition) { 
    return null; 
    } 
    }); 
    axis.setAutoRange(true); 
    axis.setAutoRangeIncludesZero(false); 

你shold然后得到这个图表:

Chart

+0

谢谢!这工作。我最初得到一个java.lang.ClassCastException:org.jfree.chart.axis.DateAxis不能转换为org.jfree.chart.axis.NumberAxis 但是,然后我在调用你的代码部分之前添加了这一行:plot。 setDomainAxis(0,new NumberAxis()); – Sujay

1

仅供参考,使用的entrySet()每当你遍历一个Map而不是迭代keySet(),然后获取每个键的值。

+0

你是对的。我应该在我的代码中使用'entrySet()'而不是'keySet()'。更有意义!谢谢 :) – Sujay

相关问题