2012-04-04 112 views
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)); 

enter image description here然而,渲染器覆盖的小区的网格线(似乎网格线被漆成在XYDifferenceRenderer之前)。

我怎样才能得到XYDifferenceRenderer顶部网格线的情节?

回答

2

虽然网格线显示在demos和​​。 sscce将是dispositive,但我怀疑你的网格和填充颜料只需要更多的对比。

+0

@trashgold:我按问题编辑! – 2012-04-04 05:18:43

+0

是的,在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

+0

@trashgold:那么,我必须继承XYPlot以覆盖draw()方法吗?但我无法在JFreeChart类中找到任何方法来设置我的情节,如:chart.setPlot(//我的子类//)? – 2012-04-04 05:31:01