2012-04-04 3 views
1

Je suis en train de créer (série chronologique) un graphique de montagne en utilisant JFreeChart. Donc, j'ai fait 2 timeseries - les données un et celui avec toutes les valeurs de gamme sont zéro. Puis, j'ai utilisé XYDifferenceRenderer pour remplir l'espace entre 2 séries avec la couleur désirée.Tracer avec grille au-dessus de XYDifferenceRenderer

code pour créer le tableau et définir renderer:

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

code pour définir GridLines visible:

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 Cependant, le moteur de rendu couvert de gridline de l'intrigue (il semble que le gridline a été peint avant le XYDifferenceRenderer).

Comment puis-je obtenir le tracé avec gridline au-dessus de XYDifferenceRenderer?

Répondre

2

Les lignes de la grille s'affichent cependant dans demos et API. Un sscce serait déterminant, mais je soupçonne que vos peintures de grille et de remplissage ont juste besoin de plus de contraste.

+0

@trashgold: J'ai édité par question! –

+0

Oui, dans l'espace HSB, ces couleurs sont assez proches, les deux ayant une très faible saturation. Pour obtenir le quadrillage, vous devez modifier l'ordre de rendu spécifié dans ['draw()'] (http://www.jfree.org/jfreechart/api/javadoc/org/jfree/chart/plot/ XYPlot.html # dessine% 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: Donc, je dois sous-classer XYPlot pour remplacer la méthode draw()? Mais je ne peux pas trouver de méthode dans la classe JFreeChart pour définir mon intrigue, quelque chose comme: chart.setPlot (// ma sous-classe //)? –