2012-04-04 110 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