2009-11-26 6 views
1

J'essaie d'obtenir le jfreechart PieChart3D pour cacher les étiquettes. Je ne trouve rien dans la documentation.Masquer les étiquettes sur jfreechart/PiePlot3D piechart

Quelqu'un sait-il comment faire?

<% response.setContentType("image/png"); %><%@page import="org.jfree.data.general.*"%><%@page import="org.jfree.chart.*"%><%@page import="org.jfree.chart.plot.*"%><%@page import="java.awt.Color" %><% 

      DefaultPieDataset ds = (DefaultPieDataset)session.getAttribute("usagePieOutputDataset"); 

      JFreeChart chart = ChartFactory.createPieChart3D 
      (
       null, // Title 
       ds,  // Dataset 
       false, // Show legend 
       false, // Use tooltips 
       false // Configure chart to generate URLs? 
      ); 

      chart.setBackgroundPaint(Color.WHITE); 
      chart.setBorderVisible(false); 

      PiePlot3D plot = (PiePlot3D)chart.getPlot(); 
      plot.setDepthFactor(0.0); 
      plot.setLabelOutlinePaint(Color.LIGHT_GRAY); 
      plot.setLabelFont(new java.awt.Font("Arial", java.awt.Font.BOLD, 10)); 


      ChartUtilities.writeChartAsPNG(response.getOutputStream(), chart, 150, 144); 
    %> 

http://www.jfree.org/jfreechart/api/javadoc/org/jfree/chart/plot/PiePlot3D.html

+0

Avez-vous vérifié ma réponse? Aucun commentaire à ce sujet et également pas accepté. Est-ce que cela ne fonctionne pas pour vous? Ou n'est pas ce que tu veux? – jitter

Répondre

14

Cela permet de masquer toutes les étiquettes:

plot.setLabelGenerator(null); //null means no labels 
1

En fait, cela semble être une façon encore plus facile et aussi beaucoup plus courte. Faites simplement la distribution de l'étiquette vous-même (implémentation anonyme) et faites comme s'il n'y avait aucune étiquette à afficher en retournant un zéro dans getItemCount().

plot.setLabelDistributor(new AbstractPieLabelDistributor() { 
    public int getItemCount() { return 0; } 
    public void distributeLabels(double minY,double height) {} 
}); 

Ancienne solution:

Je ne sais pas s'il y a un moyen plus facile, mais cela devrait fonctionner. Devrait être auto-explicatif. Ne pas afficher les liens définissent des couleurs transparentes et ne génèrent pas d'étiquettes. Sinon, demandez simplement.

Color transparent = new Color(0.0f,0.0f,0.0f,0.0f); 
plot.setLabelLinksVisible(Boolean.FALSE); 
plot.setLabelOutlinePaint(transparent); 
plot.setLabelBackgroundPaint(transparent); 
plot.setLabelShadowPaint(transparent); 
plot.setLabelGenerator(new PieSectionLabelGenerator(){ 
    @Override 
    public AttributedString generateAttributedSectionLabel(PieDataset dataset, Comparable key) { 
     return new AttributedString(""); 
    } 
    @Override 
    public String generateSectionLabel(PieDataset dataset, Comparable key) { 
     return ""; 
    } 
}); 
+0

Alors? Est-ce que cela fait ce que vous voulez? – jitter

Questions connexes