将BarChart和Linechart与J免费图表相结合

时间:2015-05-28 18:48:55

标签: java charts jfreechart

您好我试图在JFree图表中创建一个条形图和折线图组合的图表。条形图是时间与时间,每小时它将比较两个(或更多)不同的值。

折线图使用与条形图相同的比例,并显示数据集的整体趋势。

1 个答案:

答案 0 :(得分:2)

您可以在同一个绘图上绘制每个数据集,并为每个数据集使用不同的渲染器(例如BarRendererLineAndShapeRenderer)。下面是一个简化示例,它生成一些模拟数据值(1-9)并在同一ChartPanel上呈现与条形和线条相同的数据。

//Mock data
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
int[] times = new int[]{1,2,3,4,5,6,7,8,9};
for ( int i = 0; i < times.length; i++ ){
    dataset.addValue(times[i], "Time", "Hour" + String.valueOf(i+1));
}

//create the plot
CategoryPlot plot = new CategoryPlot();

//add the first dataset, and render as bar values
CategoryItemRenderer renderer = new BarRenderer();
plot.setDataset(0,dataset);
plot.setRenderer(0,renderer);  

//add the second dataset, render as lines
CategoryItemRenderer renderer2 = new LineAndShapeRenderer();
plot.setDataset(1, dataset);
plot.setRenderer(1, renderer2);

//set axis 
plot.setDomainAxis(new CategoryAxis("Time"));
plot.setRangeAxis(new NumberAxis("Value"));

结果图表:

And the results: