2012-04-04 3 views
1

Я делаю (временные ряды) диаграмму moutain с помощью JFreeChart. Итак, я сделал 2 раза - данные один и один со всеми значениями диапазона равны нулю.Участок с сеткой на вершине XYDifferenceRenderer

TimeSeriesCollection dataset2 = new TimeSeriesCollection(); 
    dataset2.addSeries(close); //my data series/ 
    dataset2.addSeries(zeroseries); /zero series/ 

Затем я использовал XYDifferenceRenderer, чтобы заполнить промежуток между двумя сериями с моим желаемым цветом.

код, чтобы создать таблицу и установить рендерер:

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); 

Код для установки GridLines видимым:

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 и API. sscce был бы диспозитивным, но я подозреваю, что ваша сетка и краска для заполнения просто требуют большего контраста.

+0

@trashgold: Я редактировал вопрос! –

+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

+0

@trashgold: Итак, я должен подклассифицировать XYPlot, чтобы переопределить метод draw()? Но я не могу найти какой-либо метод в классе JFreeChart для установки моего графика, например: chart.setPlot (// мой подкласс //)? –