2012-06-13 55 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

相關問題