顯示具有 JFreeChart 標籤的文章。 顯示所有文章
顯示具有 JFreeChart 標籤的文章。 顯示所有文章

2014年2月9日 星期日

[ Java 代碼範本 ] JFreechart: Barcharts > Stacked > StackedBarChart3DDemo4

Code: 
Used libraries: 
* jfreechart-1.0.14.jar
* jcommon-1.0.17.jar
* jfreechart-1.0.14-swt.jar

  1. package Barcharts.stacked;  
  2.   
  3. import java.awt.Dimension;  
  4. import java.text.DecimalFormat;  
  5. import java.text.NumberFormat;  
  6.   
  7. import javax.swing.JPanel;  
  8.   
  9. import org.jfree.chart.ChartFactory;  
  10. import org.jfree.chart.ChartPanel;  
  11. import org.jfree.chart.JFreeChart;  
  12. import org.jfree.chart.labels.ItemLabelAnchor;  
  13. import org.jfree.chart.labels.ItemLabelPosition;  
  14. import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;  
  15. import org.jfree.chart.plot.CategoryPlot;  
  16. import org.jfree.chart.plot.PlotOrientation;  
  17. import org.jfree.chart.renderer.category.StackedBarRenderer3D;  
  18. import org.jfree.data.category.CategoryDataset;  
  19. import org.jfree.data.category.DefaultCategoryDataset;  
  20. import org.jfree.ui.ApplicationFrame;  
  21. import org.jfree.ui.RefineryUtilities;  
  22. import org.jfree.ui.TextAnchor;  
  23.   
  24. public class StackedBarChart3DDemo4 extends ApplicationFrame  
  25. {  
  26.   
  27.     public StackedBarChart3DDemo4(String s)  
  28.     {  
  29.             super(s);  
  30.             JPanel jpanel = createDemoPanel();  
  31.             jpanel.setPreferredSize(new Dimension(500270));  
  32.             setContentPane(jpanel);  
  33.     }  
  34.   
  35.     public static CategoryDataset createDataset()  
  36.     {  
  37.             DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();  
  38.             defaultcategorydataset.addValue(10D, "Series 1""C1");  
  39.             defaultcategorydataset.addValue(5D, "Series 1""C2");  
  40.             defaultcategorydataset.addValue(6D, "Series 1""C3");  
  41.             defaultcategorydataset.addValue(7D, "Series 1""C4");  
  42.             defaultcategorydataset.addValue(8D, "Series 1""C5");  
  43.             defaultcategorydataset.addValue(9D, "Series 1""C6");  
  44.             defaultcategorydataset.addValue(10D, "Series 1""C7");  
  45.             defaultcategorydataset.addValue(11D, "Series 1""C8");  
  46.             defaultcategorydataset.addValue(3D, "Series 1""C9");  
  47.             defaultcategorydataset.addValue(4D, "Series 2""C1");  
  48.             defaultcategorydataset.addValue(7D, "Series 2""C2");  
  49.             defaultcategorydataset.addValue(17D, "Series 2""C3");  
  50.             defaultcategorydataset.addValue(15D, "Series 2""C4");  
  51.             defaultcategorydataset.addValue(6D, "Series 2""C5");  
  52.             defaultcategorydataset.addValue(8D, "Series 2""C6");  
  53.             defaultcategorydataset.addValue(9D, "Series 2""C7");  
  54.             defaultcategorydataset.addValue(13D, "Series 2""C8");  
  55.             defaultcategorydataset.addValue(7D, "Series 2""C9");  
  56.             defaultcategorydataset.addValue(15D, "Series 3""C1");  
  57.             defaultcategorydataset.addValue(14D, "Series 3""C2");  
  58.             defaultcategorydataset.addValue(12D, "Series 3""C3");  
  59.             defaultcategorydataset.addValue(11D, "Series 3""C4");  
  60.             defaultcategorydataset.addValue(10D, "Series 3""C5");  
  61.             defaultcategorydataset.addValue(0.0D, "Series 3""C6");  
  62.             defaultcategorydataset.addValue(7D, "Series 3""C7");  
  63.             defaultcategorydataset.addValue(9D, "Series 3""C8");  
  64.             defaultcategorydataset.addValue(11D, "Series 3""C9");  
  65.             defaultcategorydataset.addValue(14D, "Series 4""C1");  
  66.             defaultcategorydataset.addValue(3D, "Series 4""C2");  
  67.             defaultcategorydataset.addValue(7D, "Series 4""C3");  
  68.             defaultcategorydataset.addValue(0.0D, "Series 4""C4");  
  69.             defaultcategorydataset.addValue(9D, "Series 4""C5");  
  70.             defaultcategorydataset.addValue(6D, "Series 4""C6");  
  71.             defaultcategorydataset.addValue(7D, "Series 4""C7");  
  72.             defaultcategorydataset.addValue(9D, "Series 4""C8");  
  73.             defaultcategorydataset.addValue(10D, "Series 4""C9");  
  74.             return defaultcategorydataset;  
  75.     }  
  76.   
  77.     private static JFreeChart createChart(CategoryDataset categorydataset)  
  78.     {  
  79.             JFreeChart jfreechart = ChartFactory.createStackedBarChart3D("Stacked Bar Chart 3D Demo 4""Category""Value", categorydataset, PlotOrientation.HORIZONTAL, truetruefalse);  
  80.             CategoryPlot categoryplot = (CategoryPlot)jfreechart.getPlot();  
  81.             StackedBarRenderer3D stackedbarrenderer3d = (StackedBarRenderer3D)categoryplot.getRenderer();  
  82.             stackedbarrenderer3d.setRenderAsPercentages(true);  
  83.             stackedbarrenderer3d.setDrawBarOutline(false);  
  84.             stackedbarrenderer3d.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator("{3}", NumberFormat.getIntegerInstance(), newDecimalFormat("0.0%")));  
  85.             stackedbarrenderer3d.setBaseItemLabelsVisible(true);  
  86.             stackedbarrenderer3d.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER));  
  87.             stackedbarrenderer3d.setBaseNegativeItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER));  
  88.             return jfreechart;  
  89.     }  
  90.   
  91.     public static JPanel createDemoPanel()  
  92.     {  
  93.             JFreeChart jfreechart = createChart(createDataset());  
  94.             return new ChartPanel(jfreechart);  
  95.     }  
  96.   
  97.     public static void main(String args[])  
  98.     {  
  99.             StackedBarChart3DDemo4 stackedbarchart3ddemo4 = new StackedBarChart3DDemo4("Stacked Bar Chart 3D Demo 4");  
  100.             stackedbarchart3ddemo4.pack();  
  101.             RefineryUtilities.centerFrameOnScreen(stackedbarchart3ddemo4);  
  102.             stackedbarchart3ddemo4.setVisible(true);  
  103.     }  
  104. }  
UI: 

2013年1月9日 星期三

[ Java 常見問題 ] JFreeChart : Retrieve data from mouse click on graph

Preface: 
這邊要講解, 如何透過在 JFreeChart 產生的 Chart 圖表上, 點擊圖表並獲得特定區域的資料. 這邊會以 PieChart3DDemo3 當作範例. 

Sample Code: 
在 PieChart3DDemo3 的執行結果會得到下面的 PieChart 圖表, 而我們的加 code 讓你在Pie 圖表特定區塊上點擊滑鼠後, 跳出視窗顯示點擊區域的主題: 
 

其實只要在 ChartPanel 加上 ChartMouseListener 如下: 
  1. chartpanel.addChartMouseListener(new ChartMouseListener(){  
  2.     public void chartMouseClicked(ChartMouseEvent e){  
  3.         PieSectionEntity entity = (PieSectionEntity)e.getEntity();  
  4.         System.out.println(entity.getSectionKey());  
  5.         JOptionPane.showConfirmDialog(null, entity.getSectionKey(), "Info", JOptionPane.CLOSED_OPTION, JOptionPane.INFORMATION_MESSAGE);  
  6.     }  
  7.     public void chartMouseMoved(ChartMouseEvent e){  
  8.         //[...do something on move...]  
  9.     }  
  10. });  
如此你在 Java 區域點擊便會得到對應 Key 值的 Popup 如下: 
 

完整代碼如下: 
  1. package piecharts;  
  2.   
  3. import java.awt.Dimension;  
  4. import java.text.AttributedString;  
  5.   
  6. import javax.swing.JOptionPane;  
  7. import javax.swing.JPanel;  
  8.   
  9. import org.jfree.chart.ChartFactory;  
  10. import org.jfree.chart.ChartMouseEvent;  
  11. import org.jfree.chart.ChartMouseListener;  
  12. import org.jfree.chart.ChartPanel;  
  13. import org.jfree.chart.JFreeChart;  
  14. import org.jfree.chart.entity.PieSectionEntity;  
  15. import org.jfree.chart.labels.PieSectionLabelGenerator;  
  16. import org.jfree.chart.plot.PiePlot3D;  
  17. import org.jfree.data.general.DefaultPieDataset;  
  18. import org.jfree.data.general.PieDataset;  
  19. import org.jfree.ui.ApplicationFrame;  
  20. import org.jfree.ui.RefineryUtilities;  
  21. import org.jfree.util.Rotation;  
  22.   
  23. public class PieChart3DDemo3 extends ApplicationFrame {  
  24.     static class CustomLabelGenerator implements PieSectionLabelGenerator {  
  25.   
  26.         public String generateSectionLabel(PieDataset piedataset,  
  27.                 Comparable comparable) {  
  28.             String s = null;  
  29.             if (piedataset != null && !comparable.equals("PHP"))  
  30.                 s = comparable.toString();  
  31.             return s;  
  32.         }  
  33.   
  34.         public AttributedString generateAttributedSectionLabel(  
  35.                 PieDataset piedataset, Comparable comparable) {  
  36.             return null;  
  37.         }  
  38.   
  39.         CustomLabelGenerator() {  
  40.         }  
  41.     }  
  42.   
  43.     public PieChart3DDemo3(String s) {  
  44.         super(s);  
  45.         PieDataset piedataset = createDataset();  
  46.         JFreeChart jfreechart = createChart(piedataset);  
  47.         ChartPanel chartpanel = new ChartPanel(jfreechart);  
  48.         chartpanel.setPreferredSize(new Dimension(500270));  
  49.         chartpanel.addChartMouseListener(new ChartMouseListener(){  
  50.             public void chartMouseClicked(ChartMouseEvent e){  
  51.                 PieSectionEntity entity = (PieSectionEntity)e.getEntity();  
  52.                 System.out.println(entity.getSectionKey());  
  53.                 JOptionPane.showConfirmDialog(null, entity.getSectionKey(), "Info", JOptionPane.CLOSED_OPTION, JOptionPane.INFORMATION_MESSAGE);  
  54.             }  
  55.             public void chartMouseMoved(ChartMouseEvent e){  
  56.                 //[...do something on move...]  
  57.             }  
  58.         });  
  59.         setContentPane(chartpanel);  
  60.     }  
  61.   
  62.     private static PieDataset createDataset() {  
  63.         DefaultPieDataset defaultpiedataset = new DefaultPieDataset();  
  64.         defaultpiedataset.setValue("Java"new Double(43.200000000000003D));  
  65.         defaultpiedataset.setValue("Visual Basic"new Double(10D));  
  66.         defaultpiedataset.setValue("C/C++"new Double(17.5D));  
  67.         defaultpiedataset.setValue("PHP"new Double(32.5D));  
  68.         defaultpiedataset.setValue("Perl"new Double(1.0D));  
  69.         return defaultpiedataset;  
  70.     }  
  71.   
  72.     private static JFreeChart createChart(PieDataset piedataset) {  
  73.         JFreeChart jfreechart = ChartFactory.createPieChart3D(  
  74.                 "Pie Chart 3D Demo 3", piedataset, truetruefalse);  
  75.         PiePlot3D pieplot3d = (PiePlot3D) jfreechart.getPlot();  
  76.         pieplot3d.setStartAngle(290D);  
  77.         pieplot3d.setDirection(Rotation.CLOCKWISE);  
  78.         pieplot3d.setForegroundAlpha(0.5F);  
  79.         pieplot3d.setNoDataMessage("No data to display");  
  80.         pieplot3d.setLabelGenerator(new CustomLabelGenerator());  
  81.         return jfreechart;  
  82.     }  
  83.   
  84.     public static JPanel createDemoPanel() {  
  85.         JFreeChart jfreechart = createChart(createDataset());  
  86.         return new ChartPanel(jfreechart);  
  87.     }  
  88.   
  89.     public static void main(String args[]) {  
  90.         PieChart3DDemo3 piechart3ddemo3 = new PieChart3DDemo3(  
  91.                 "JFreeChart: PieChart3DDemo3.java");  
  92.         piechart3ddemo3.pack();  
  93.         RefineryUtilities.centerFrameOnScreen(piechart3ddemo3);  
  94.         piechart3ddemo3.setVisible(true);  
  95.     }  
  96. }  

Supplement: 
Stackoverflow : JFreeChart - obtain data source value on mouse click

[Git 常見問題] error: The following untracked working tree files would be overwritten by merge

  Source From  Here 方案1: // x -----删除忽略文件已经对 git 来说不识别的文件 // d -----删除未被添加到 git 的路径中的文件 // f -----强制运行 #   git clean -d -fx 方案2: 今天在服务器上  gi...