1
我使用JFreeChart绘制(时间序列)山峰图。所以,我做了2个时间序列 - 数据1和所有范围值都是零。用XYDifferenceRenderer顶部的网格线绘制
TimeSeriesCollection dataset2 = new TimeSeriesCollection();
dataset2.addSeries(close); //my data series/
dataset2.addSeries(zeroseries); /zero series/
然后,我用XYDifferenceRenderer来填补我想要的颜色与2系列之间的差距。
代码来创建图表,并设置渲染器:
final JFreeChart chart = garch_differencechart(url);//my method to create the chart//
final ChartPanel chartPanel = new ChartPanel(chart);
final XYPlot plot = (XYPlot) chart.getPlot();
chart.setBackgroundPaint(Color.WHITE);
plot.setBackgroundPaint(Color.WHITE);
XYDifferenceRenderer renderer = new XYDifferenceRenderer();
renderer.setPositivePaint(new Color(202, 225, 255));
renderer.setSeriesPaint(0, new Color(72, 118, 255));
renderer.setSeriesStroke(0, new BasicStroke(1.2f));
plot.setRenderer(renderer);
代码来设置网格线可见:
plot.setDomainGridlinesVisible(true);
plot.setDomainGridlinePaint(new Color(234,234,234));
plot.setDomainGridlineStroke(new BasicStroke(0.5f));
plot.setRangeGridlinesVisible(true);
plot.setRangeGridlinePaint(new Color(234,234,234));
plot.setRangeGridlineStroke(new BasicStroke(0.5f));
然而,渲染器覆盖的小区的网格线(似乎网格线被漆成在XYDifferenceRenderer之前)。
我怎样才能得到XYDifferenceRenderer顶部网格线的情节?
@trashgold:我按问题编辑! – 2012-04-04 05:18:43
是的,在HSB空间中,这些颜色非常接近,都具有非常低的饱和度。为了将网格线置于顶部,您必须更改['draw()']中指定的渲染顺序(http://www.jfree.org/jfreechart/api/javadoc/org/jfree/chart/plot/ XYPlot.html#绘制%28java.awt.Graphics2D,%20java.awt.geom.Rectangle2D,%20java.awt.geom.Point2D,%20org.jfree.chart.plot.PlotState,%20org.jfree.chart.plot。 PlotRenderingInfo%29)。 – trashgod 2012-04-04 05:22:45
@trashgold:那么,我必须继承XYPlot以覆盖draw()方法吗?但我无法在JFreeChart类中找到任何方法来设置我的情节,如:chart.setPlot(//我的子类//)? – 2012-04-04 05:31:01