JFreeChart 绘制折线图问题

小边 发布于 2015/01/23 17:23
阅读 355
收藏 0

这是我绘制折线图的代码,数据我都存在 ExcelObject excel 这个对象里面, 我要绘制三条折线,但这三条折线的数据差异比较大,所以没法再一个屏幕上全部显示三条折线,有什么好的办法让三条折线同时显示正常, 折线上能显示相应坐标点数据,给位大侠帮忙指点下,第一次做这个

public class LineCharts extends ApplicationFrame {

    private static final long serialVersionUID = 1L;

    public LineCharts(String s , ExcelObject excel) {
       super(s);
       setContentPane(createDemoLine(excel));
    }

    

    // 生成显示图表的面板
    public static JPanel createDemoLine(ExcelObject excel) {
       JFreeChart jfreechart = createChart(createDataset(excel));
       return new ChartPanel(jfreechart);
    }

    // 生成图表主对象JFreeChart
    public static JFreeChart createChart(DefaultCategoryDataset linedataset) {
       // 定义图表对象
       JFreeChart chart = ChartFactory.createLineChart("Load Test", //折线图名称
         "Thread", // 横坐标名称
         "Value", // 纵坐标名称
         linedataset, // 数据
         PlotOrientation.VERTICAL, // 水平显示图像
         true, // include legend
         true, // tooltips
         true // urls
         );

        
       CategoryPlot plot = chart.getCategoryPlot();
       plot.setRangeGridlinesVisible(true); //是否显示格子线
       plot.setBackgroundAlpha(0.1f); //设置背景透明度
      
       NumberAxis rangeAxis = (NumberAxis)plot.getRangeAxis();
       
       rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
       rangeAxis.setAutoRangeIncludesZero(true);
       rangeAxis.setUpperMargin(0.20);
       rangeAxis.setLabelAngle(Math.PI / 2.0);
       rangeAxis.setAutoRange(false);
       rangeAxis.setAutoRangeMinimumSize(0.08);
       
       return chart;
    }

    // 生成数据
    public static DefaultCategoryDataset createDataset(ExcelObject excel) {
       DefaultCategoryDataset linedataset = new DefaultCategoryDataset();
       for (int i=0; i <excel.getThreadNum(); i++) {
           linedataset.addValue(excel.getThroughput()[i], "throughput", excel.getThread()[i]);
           linedataset.addValue(excel.getAverage()[i], "average", excel.getThread()[i]);
           linedataset.addValue(excel.getError()[i], "error", excel.getThread()[i]);
       }

       return linedataset;
    }
}

加载中
0
小边
小边
求各位大神帮帮忙!
返回顶部
顶部