jfreechart

柱状图的绘制:

  • 先看一下,不同形状的报表的构成。通过图形可以看出:
  • 代码绘制绘制如下:
    1. String title="用户统计报表(所属单位)";//图形的标题  
    2.           
    3.         String categoryAxisLabel = "所属单位名称"//x轴外的坐标  
    4.           
    5.         String valueAxisLabel = "数量"//y轴外的坐标  
    6.           
    7.         DefaultCategoryDataset dataset = new DefaultCategoryDataset();//图形的数据集合  
    8.           
    9.         dataset.addValue(12"中国""北京");  
    10.         dataset.addValue(6"中国""上海");  
    11.         dataset.addValue(2"中国""深圳");  
    12.           
    13.         dataset.addValue(9"美国""纽约");  
    14.         dataset.addValue(3"美国""洛杉矶");  
    15.         dataset.addValue(1"美国""华盛顿");  
    16.           
    17.         PlotOrientation orientation = PlotOrientation.VERTICAL;//图形的显示形式(水平/垂直)  
    18.           
    19.         boolean legend = true//是否生成子标题  
    20.         boolean tooltips = true;//是否在图形上生成工具的提示  
    21.         boolean urls = true;//是否通过图形生产url  
    22.           
    23.         //ChartFactory类可以创建,各种图形的报表  
    24.         JFreeChart chart = ChartFactory.createBarChart3D(title,   
    25.                                 categoryAxisLabel,   
    26.                                 valueAxisLabel,   
    27.                                 dataset,   
    28.                                 orientation,   
    29.                                 legend,   
    30.                                 tooltips,   
    31.                                 urls);  
    32.           
    33.         //处理乱码问题:  
    34.         //处理主标题乱码  
    35.         chart.getTitle().setFont(new Font("宋体",Font.BOLD,22));  
    36.         //处理子标题乱码  
    37.         chart.getLegend().setItemFont(new Font("宋体",Font.BOLD,18));  
    38.         //绘图对象  
    39.         /** 
    40.          * 方式一:使用debug抓取 
    41.          * 方式二:使用输出语句System.out.println(chart.getPlot()); 
    42.          * 方式三:查看API 
    43.          */  
    44.         CategoryPlot plot = (CategoryPlot) chart.getPlot();  
    45.         //获取x轴对象  
    46.         CategoryAxis3D categoryAxis3D= (CategoryAxis3D) plot.getDomainAxis();  
    47.         //获取Y轴对象  
    48.         NumberAxis3D numberAxis3D = (org.jfree.chart.axis.NumberAxis3D) plot.getRangeAxis();  
    49.         //设置x轴上的乱码  
    50.         categoryAxis3D.setTickLabelFont(new Font("宋体",Font.BOLD,15));  
    51.         //设置x轴外的乱码  
    52.         categoryAxis3D.setLabelFont(new Font("宋体",Font.BOLD,15));  
    53.         //设置y轴上的乱码  
    54.         numberAxis3D.setTickLabelFont(new Font("宋体",Font.BOLD,15));  
    55.         //设置y轴外的乱码  
    56.         numberAxis3D.setLabelFont(new Font("宋体",Font.BOLD,15));  
    57.         //将y轴上的刻度,去掉默认值,采用1为单位  
    58.         numberAxis3D.setAutoTickUnitSelection(false);  
    59.         NumberTickUnit numberTickUnit = new NumberTickUnit(1);  
    60.         numberAxis3D.setTickUnit(numberTickUnit);  
    61.           
    62.         //获取绘图区域  
    63.         BarRenderer3D barRenderer3D = (org.jfree.chart.renderer.category.BarRenderer3D) plot.getRenderer();  
    64.         //将图像的宽度表小一点,按百分比来算  
    65.         barRenderer3D.setMaximumBarWidth(0.88);  
    66.         //在图形上生成数字  
    67.         barRenderer3D.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());  
    68.         barRenderer3D.setBaseItemLabelsVisible(true);  
    69.         barRenderer3D.setBaseLegendTextFont(new Font("宋体",Font.BOLD,12));  
    70.           
    71.         ChartFrame frame = new ChartFrame("分布图",chart);  
    72.         frame.setVisible(true);  
    73.         frame.pack();  

线状图的绘制:

  • 线状图的图形表示:
  • 代码绘制如下:
    1. String title = "用户统计报表(所属单位)";  
    2. String categoryAxisLabel = "所属单位名称";  
    3. String valueAxisLabel = "数量";  
    4. //构造图象的数据  
    5. DefaultCategoryDataset dataset = new DefaultCategoryDataset();  
    6.   
    7. dataset.addValue(12"所属单位""北京");  
    8. dataset.addValue(6"所属单位""上海");  
    9. dataset.addValue(2"所属单位""深圳");  
    10.   
    11. PlotOrientation orientation = PlotOrientation.VERTICAL;//图形的显示形式(水平/垂直)  
    12. boolean legend = true;//是否生成子标题  
    13. boolean tooltips = true;//是否在图形上生成工具的提示  
    14. boolean urls = true;//是否通过图形生产url  
    15. //ChartFactory类可以创建,各种图形的报表  
    16. JFreeChart chart = ChartFactory.createLineChart(title,   
    17.                             categoryAxisLabel,   
    18.                             valueAxisLabel,   
    19.                             dataset,   
    20.                             orientation,   
    21.                             legend,   
    22.                             tooltips,   
    23.                             urls);  
    24. //处理主标题乱码  
    25. chart.getTitle().setFont(new Font("宋体",Font.BOLD,22));  
    26. //处理子标题乱码  
    27. chart.getLegend().setItemFont(new Font("宋体",Font.BOLD,20));  
    28. //获取绘图对象  
    29. /** 
    30.  * 方式一:使用debug抓取 
    31.  * 方式二:使用输出语句System.out.println(chart.getPlot()); 
    32.  * 方式三:查看API 
    33.  */  
    34. CategoryPlot categoryPlot = (CategoryPlot) chart.getPlot();  
    35. //获取x轴对象  
    36. CategoryAxis categoryAxis = categoryPlot.getDomainAxis();  
    37. //获取y轴对象  
    38. NumberAxis numberAxis = (NumberAxis) categoryPlot.getRangeAxis();  
    39. //处理x轴上的乱码  
    40. categoryAxis.setTickLabelFont(new Font("宋体",Font.BOLD,15));  
    41. //处理x轴外的乱码  
    42. categoryAxis.setLabelFont(new Font("宋体",Font.BOLD,15));  
    43. //处理y轴上的乱码  
    44. numberAxis.setTickLabelFont(new Font("宋体",Font.BOLD,15));  
    45. //处理y轴上的乱码  
    46. numberAxis.setLabelFont(new Font("宋体",Font.BOLD,15));  
    47. //将y轴上的刻度,去掉默认值。采用1为单位。  
    48. numberAxis.setAutoTickUnitSelection(false);  
    49. numberAxis.setTickUnit(new NumberTickUnit(1));  
    50.   
    51. //得到绘图区域对象  
    52. LineAndShapeRenderer  lineAndShapeRenderer  = (LineAndShapeRenderer) categoryPlot.getRenderer();  
    53. //在图形上生成数字  
    54. lineAndShapeRenderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());  
    55. lineAndShapeRenderer.setBaseItemLabelsVisible(true);  
    56. lineAndShapeRenderer.setBaseItemLabelFont(new Font("宋体",Font.BOLD,12));  
    57.   
    58. //在图形上生成矩形的转折点  
    59. Shape shape = new Rectangle(10,10);  
    60. lineAndShapeRenderer.setSeriesShape(0, shape);//int类型,表示第几条线,0表示第1条线  
    61. lineAndShapeRenderer.setSeriesShapesVisible(0true);//int类型,表示第几条线,0表示第1条线  
    62. //生成图形。  
    63. ChartFrame frame = new ChartFrame("线性图", chart);  
    64. frame.setVisible(true);  
    65. frame.pack();  

饼图的绘制:

  • 饼图的图像表示:
  • 代码绘制如下:
    1. String title = "用户统计报表(所属单位)";//图形的标题  
    2.           
    3.         DefaultPieDataset dataset = new DefaultPieDataset();//图形的数据集合  
    4.           
    5.         dataset.setValue("北京"12);  
    6.         dataset.setValue("上海"6);  
    7.         dataset.setValue("深圳"2);  
    8.           
    9.         boolean legend = true;//是否生成子标题  
    10.         boolean tooltips = true;//是否在图形上生成工具的提示  
    11.         boolean urls = true;//是否通过图形生产url  
    12.         //ChartFactory类可以创建,各种图形的报表  
    13.         JFreeChart chart = ChartFactory.createPieChart3D(title,   
    14.                                       dataset,   
    15.                                       legend,   
    16.                                       tooltips,   
    17.                                       urls);  
    18.         //处理乱码  
    19.         //设置主标题乱码  
    20.         chart.getTitle().setFont(new Font("宋体",Font.BOLD,22));  
    21.         //设置子标题乱码  
    22.         chart.getLegend().setItemFont(new Font("宋体",Font.BOLD,20));  
    23.         //获取图标区域对象  
    24.         /** 
    25.          * 方式一:使用debug抓取 
    26.          * 方式二:使用输出语句System.out.println(chart.getPlot()); 
    27.          * 方式三:查看API 
    28.          */  
    29.         PiePlot3D piePlot3D = (PiePlot3D) chart.getPlot();  
    30.         //处理图形上的乱码  
    31.         piePlot3D.setLabelFont(new Font("宋体",Font.BOLD,15));  
    32.         //将北京 12 (60%),显示在图形上  
    33.         String labelFormat = "{0} {1} ({2})";  
    34.         piePlot3D.setLabelGenerator(new StandardPieSectionLabelGenerator(labelFormat));  
    35.           
    36.         //输出图像  
    37.         ChartFrame frame = new ChartFrame("饼状图", chart);  
    38.         frame.setVisible(true);  
    39.         frame.pack(); 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值