2011-03-12 103 views
1

我使用Jfree圖表0.9.20的XYLineChartDemo繪製程序中正在運行的進程的執行時間。我的X軸代表時間,Y軸代表Pid。我如何編輯Jfreechart文件來使我的Y軸表示我想要的值而不是數字0範圍?還有一種方法可以將線繪製得更寬一些?Jfree圖表更改Y軸數據

回答

3

研究這個:

public JFreeChart createChart(String axisX, String axisY){ 

    JFreeChart chart = ChartFactory.createTimeSeriesChart(null, axisX, axisY, dataSeries, true, true, false); 

    final XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer(); 
    renderer.setSeriesLinesVisible(0,true); 
    renderer.setSeriesShapesVisible(0, true); 

    //percentage (y-axis) 
    final NumberAxis percentAxis = new NumberAxis(axisY); 
    percentAxis.setInverted(false); 
    percentAxis.setRange(0.0, 100.0); 

    //time (x-axis) 
    final DateAxis timeAxis = new DateAxis(axisX); 
    timeAxis.setStandardTickUnits(DateAxis.createStandardDateTickUnits(TimeZone.getDefault(), Locale.ENGLISH)); 

    double range = 0; 

    switch (format){ 
     case ONE_MINUTE_RANGE: range = 60*1000; break; 
     case TEN_MINUTE_RANGE: range = 10*60*1000; break; 
     case ONE_HOUR_RANGE: range = 60*60*1000; break; 
    } 

    timeAxis.setRange(System.currentTimeMillis()-range/2, System.currentTimeMillis()+range/2); //time duration based on format chosen 

    XYPlot plot = chart.getXYPlot(); 
    plot.setDomainAxis(timeAxis); 
    plot.setRangeAxis(percentAxis); 

    plot.setBackgroundPaint(Color.white); 
    plot.setRangeGridlinePaint(Color.gray); 
    plot.setRangeZeroBaselinePaint(Color.gray); 
    plot.setDomainGridlinePaint(Color.gray); 
    plot.setForegroundAlpha(0.5f); 
    plot.setRenderer(renderer); 

    chart.setBackgroundPaint(Color.white); 

    return chart; 
} 
+0

謝謝!我已經設定了較低的範圍是我的最低pid,較高的是最高的pid。任何關於如何改變XY折線圖的寬度的指針? – Sathya 2011-03-12 10:07:34

+0

@ user644575您應該使用ChartPanel容器來更改JFreeChart對象的寬度和高度 – eee 2011-03-16 13:51:53

+0

@ user644575:對於系列行筆劃(將其稱爲「寬度」),請使用LineAndShapeRenderer.setSeriesStroke(int series,java.awt .Stroke stroke)'設置筆畫的方法。 – eee 2011-03-17 15:17:58