将条形图和折线图与 J 免费图表相结合
Combining a BarChart and Linechart with J free chart
您好,我正在尝试在 JFree 图表中创建一个组合了条形图和折线图的图表。条形图是 vs 时间,每个小时都会比较两个(或更多)不同的值。
折线图使用与条形图相同的尺度,显示数据集的整体趋势。
您可以在同一个图上绘制每个数据集,并为每个数据集使用不同的渲染器(例如 BarRenderer
和 LineAndShapeRenderer
)。下面是一个简化的示例,它生成一些模拟数据值 (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"));
生成的图表:
您好,我正在尝试在 JFree 图表中创建一个组合了条形图和折线图的图表。条形图是 vs 时间,每个小时都会比较两个(或更多)不同的值。
折线图使用与条形图相同的尺度,显示数据集的整体趋势。
您可以在同一个图上绘制每个数据集,并为每个数据集使用不同的渲染器(例如 BarRenderer
和 LineAndShapeRenderer
)。下面是一个简化的示例,它生成一些模拟数据值 (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"));
生成的图表: