我正在绘制CPU负载平均值(5秒间隔)。传统上,这是作为实心填充区域图而不是单个浮动线完成的,例如......
这似乎是一个非常简单的请求,但我找不到解决方案。
我剩下的一条途径是将默认渲染器子类化。但我一直认为必须有更简单的东西。
你的线索&其他指针将是最受欢迎的。
微米。
答案 0 :(得分:2)
也许我有点晚了,但我有一个可能的解决方案。 jfreechart允许制作这些图表。
由于您需要CPU负载图表,因此最佳类型的图表是TimeSeriesChart。用于此图表的最佳数据集是TimeSeriesCollection。在图片中,您的时间序列集包含2个时间序列。
主要解决方案是使用2个渲染器和2个独立的数据集。第一个渲染(显示实心区域)应为XYAreaRenderer。第二个(显示水平线)应为XYLineAndShapeRenderer。
以下是我们如何使用它的示例:
JFreeChart chart = ChartFactory.createTimeSeriesChart(chartTitle,
axisXTitle, axisYTitle, dataset, true, true, false);
XYPlot plot = (XYPlot) chart.getPlot();
XYAreaRenderer renderer = new XYAreaRenderer();
renderer.setSeriesVisible(0, true);
renderer.setSeriesVisible(1, false);
plot.setRenderer(0, renderer);
// this part is important, we should create
// the new dataset object exactly the same as original
TimeSeriesCollection newDataset = null;
if (plot.getDataset(0) instanceof TimeSeriesCollection) {
newDataset = (TimeSeriesCollection)
((TimeSeriesCollection) plot.getDataset()).clone();
}
plot.setDataset(1, newDataset);
// add new XYLineAndShapeRenderer to display capacity
XYLineAndShapeRenderer lineAndShapeRenderer = new XYLineAndShapeRenderer(true, false);
lineAndShapeRenderer.setSeriesVisible(0, false);
lineAndShapeRenderer.setSeriesVisible(1, true);
plot.setRenderer(1, lineAndShapeRenderer);
当然,您可以根据需要自定义这些渲染器(例如设置自定义颜色等)。请在此界面中查看更多信息:XYItemRenderer
此外,您可以自定义图表(图表)。请看这里:Plot。
答案 1 :(得分:1)
您可能正在寻找org.jfree.chart.renderer.AreaRenderer
。在区域图表下的java-web-start示例demo中显示了几个问题。或者,XYBarRenderer
可以生成一个漂亮的直方图。