2011-03-12 99 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