java - How to display percentage values of label JFreeChart? -


i discovered jfreechart generating simple pie charts. want display pies values of label (in percent) shows label name without value.

here code:

package testpie;  // import swing classes import java.awt.*; import java.awt.event.*; import javax.swing.*;  // import jfreechart classes import org.jfree.chart.*; import org.jfree.chart.plot.*; import org.jfree.data.*; import org.jfree.data.general.*;  public class first extends jpanel {   // holds data   private defaultpiedataset dataset = new defaultpiedataset();    // create set of charts   private jfreechart chart1;   private jfreechart chart2;   private jfreechart chart3;   private jfreechart chart4;    // create set of panels can show charts   private chartpanel panel1;   private chartpanel panel2;   private chartpanel panel3;   private chartpanel panel4;    public first()   {     // initialize dataset     dataset.setvalue( "california", new double(10.0));     dataset.setvalue( "arizona", new double(8.0));     dataset.setvalue( "new mexico", new double(8.0));     dataset.setvalue( "texas", new double(40.0));     dataset.setvalue( "louisiana", new double(8.0) );     dataset.setvalue( "mississippi", new double(4.0));     dataset.setvalue( "alabama", new double(2.0));     dataset.setvalue( "florida", new double(20.0));      // create charts     chart1 = chartfactory.createpiechart(       "driving time spent per state (flat pie chart)", // chart title       dataset,         // dataset chart       true,          // legend required?       true,          // use tooltips       false          // configure chart generate urls?     );     chart2 = chartfactory.createpiechart(       "driving time spent per state (exploded pie chart)", // chart title       dataset,         // dataset chart       true,          // legend required?       true,          // use tooltips       false          // configure chart generate urls?     );     pieplot plot = ( pieplot )chart2.getplot();     plot.setexplodepercent( 3, 0.25 );      chart3 = chartfactory.createpiechart3d(       "driving time spent per state (3d pie chart)", // chart title       dataset,         // dataset chart       true,          // legend required?       true,          // use tooltips       false          // configure chart generate urls?     );     chart4 = chartfactory.createpiechart3d(       "driving time spent per state (3d transparency)", // chart title       dataset,         // dataset chart       true,          // legend required?       true,          // use tooltips       false          // configure chart generate urls?     );     pieplot3d plot4 = ( pieplot3d )chart4.getplot();     plot4.setforegroundalpha( 0.6f );      // create panel     this.setlayout( new gridlayout( 2, 2 ) );     this.panel1 = new chartpanel( chart1 );     this.panel2 = new chartpanel( chart2 );     this.panel3 = new chartpanel( chart3 );     this.panel4 = new chartpanel( chart4 );     this.add( panel1 );     this.add( panel2 );     this.add( panel3 );     this.add( panel4 );   }    public static void main( string[] args )   {     jframe frame = new jframe( "my trip driving ca fl..." );     first chart = new first();     frame.getcontentpane().add( chart, borderlayout.center );     frame.setsize( 640, 480 );     frame.setvisible( true );     frame.setdefaultcloseoperation( jframe.exit_on_close );   } }  

i followed this tutorial, can't display values of each labels.

the easy way using old version of jfreechart, such 1.0.1. using version result:

result version 1.0.1

the other way, using recent version of jfreechart such 1.0.19, changing piesectionlabelgenerator. default includes key of data set.

to need create custom label format standard label generator, this:

piesectionlabelgenerator labelgenerator = new standardpiesectionlabelgenerator("{0} = {1}"); 

and change label generator plots, this:

plot.setlabelgenerator(labelgenerator); 

with result:

result version 1.0.19

if need %, use in label format {0} = {2} instead of {0} = {1} , displayed california = 10%.

this full example:

public class first extends jpanel {      private static final long serialversionuid = 4400735172378226919l;      public first() {         final defaultpiedataset dataset = new defaultpiedataset();          dataset.setvalue("california", new double(10.0));         dataset.setvalue("arizona", new double(8.0));         dataset.setvalue("new mexico", new double(8.0));         dataset.setvalue("texas", new double(40.0));         dataset.setvalue("louisiana", new double(8.0));         dataset.setvalue("mississippi", new double(4.0));         dataset.setvalue("alabama", new double(2.0));         dataset.setvalue("florida", new double(20.0));          // create custom label generator         final piesectionlabelgenerator labelgenerator = new standardpiesectionlabelgenerator("{0} = {1}");          // create charts         final jfreechart chart1 = chartfactory.createpiechart("driving time spent per state (flat pie chart)", dataset, true, true, false);         final pieplot plot1 = (pieplot) chart1.getplot();         plot1.setlabelgenerator(labelgenerator);          final jfreechart chart2 = chartfactory.createpiechart("driving time spent per state (exploded pie chart)", dataset, true, true, false);         final pieplot plot2 = (pieplot) chart2.getplot();         plot2.setexplodepercent("3", 0.25);         plot2.setlabelgenerator(labelgenerator);          final jfreechart chart3 = chartfactory.createpiechart3d("driving time spent per state (3d pie chart)", dataset, true, true, false);         final pieplot3d plot3 = (pieplot3d) chart3.getplot();         plot3.setlabelgenerator(labelgenerator);          final jfreechart chart4 = chartfactory.createpiechart3d("driving time spent per state (3d transparency)", dataset, true, true, false);         final pieplot3d plot4 = (pieplot3d) chart4.getplot();         plot4.setforegroundalpha(0.6f);         plot4.setlabelgenerator(labelgenerator);          // create panel         this.setlayout(new gridlayout(2, 2));         final chartpanel panel1 = new chartpanel(chart1);         final chartpanel panel2 = new chartpanel(chart2);         final chartpanel panel3 = new chartpanel(chart3);         final chartpanel panel4 = new chartpanel(chart4);         this.add(panel1);         this.add(panel2);         this.add(panel3);         this.add(panel4);     }      public static void main(final string[] args) {         final jframe frame = new jframe("my trip driving ca fl...");         final first chart = new first();         frame.getcontentpane().add(chart, borderlayout.center);         frame.setsize(640, 480);         frame.setvisible(true);         frame.setdefaultcloseoperation(jframe.exit_on_close);     }  } 

Comments

Popular posts from this blog

How to connect android app to App engine -

gcc - MinGW's ld cannot perform PE operations on non PE output file -

php - display validation error message next to the textbox in codeigniter -