JFreeChart最佳实践:柱状图

这几天由于客观因素(天冷和停电)和主观因素(项目吃紧,每天都加班到9点,回来也就不想搞了)。就这样耽搁了好几天的时间了!不过偶然的机会在网上换到了一篇整理好的API,所以整理常用的柱状图就容易多了。里面的封装方法太多了,一般是很难记住的.很多都要实践了才知道其作用,这里就直接上代码了。也好之后备用巩固学习。

package com.huawei.jfreechart;

 
  1. importjava.awt.Color;
  2. importjava.awt.Font;
  3. importorg.jfree.chart.ChartFactory;
  4. importorg.jfree.chart.ChartFrame;
  5. importorg.jfree.chart.JFreeChart;
  6. importorg.jfree.chart.axis.CategoryAxis;
  7. importorg.jfree.chart.axis.CategoryLabelPositions;
  8. importorg.jfree.chart.axis.NumberAxis;
  9. importorg.jfree.chart.axis.NumberTickUnit;
  10. importorg.jfree.chart.plot.CategoryPlot;
  11. importorg.jfree.chart.plot.PlotOrientation;
  12. importorg.jfree.chart.title.TextTitle;
  13. importorg.jfree.data.category.CategoryDataset;
  14. importorg.jfree.data.category.DefaultCategoryDataset;
  15. /**
  16. *@name何枫
  17. *@date2010-12-17
  18. *@actioncreateBarChart3DTest.java
  19. *@time下午10:35:52
  20. *@package_namecom.huawei.jfreechart
  21. *@project_namejfreechartTest
  22. */
  23. publicclasscreateBarChart3DTest{
  24. privatestaticCategoryDatasetgetDataSet(){
  25. DefaultCategoryDatasetdataset=newDefaultCategoryDataset();
  26. dataset.addValue(200,"计划","清华大学");
  27. dataset.addValue(400,"实报","清华大学");
  28. dataset.addValue(360,"计划","天津大学");
  29. dataset.addValue(520,"实报","天津大学");
  30. dataset.addValue(100,"计划","北京大学");
  31. dataset.addValue(150,"实报","北京大学");
  32. dataset.addValue(280,"计划","复旦大学");
  33. dataset.addValue(300,"实报","复旦大学");
  34. returndataset;
  35. }
  36. publicstaticvoidmain(String[]args){
  37. CategoryDatasetdataset=getDataSet();
  38. JFreeChartchart=ChartFactory.createBarChart3D("水果产量图","水果产品","销售数量",dataset,PlotOrientation.VERTICAL,true,true,true);
  39. ChartFrameframe=newChartFrame("水果产量图",chart,true);
  40. //自定义设定背景色
  41. //chart.setBackgroundPaint(Color.getHSBColor(23,192,223));
  42. chart.setBackgroundPaint(Color.WHITE);
  43. //获得plot:3dBar为CategoryPlot
  44. CategoryPlotcategoryPlot=chart.getCategoryPlot();
  45. //设定图表数据显示部分背景色
  46. categoryPlot.setBackgroundPaint(Color.BLACK);
  47. //横坐标网格线
  48. categoryPlot.setDomainGridlinePaint(Color.RED);
  49. //设置网格线可见
  50. categoryPlot.setDomainGridlinesVisible(true);
  51. //纵坐标网格线
  52. categoryPlot.setRangeGridlinePaint(Color.RED);
  53. //重要的类,负责生成各种效果
  54. //BarRenderer3Drenderer=(BarRenderer3D)categoryPlot.getRenderer();
  55. //获取纵坐标
  56. NumberAxisnumberaxis=(NumberAxis)categoryPlot.getRangeAxis();
  57. //设置纵坐标的标题字体和大小
  58. numberaxis.setLabelFont(newFont("黑体",Font.CENTER_BASELINE,24));
  59. //设置丛坐标的坐标值的字体颜色
  60. numberaxis.setLabelPaint(Color.BLACK);
  61. //设置丛坐标的坐标轴标尺颜色
  62. numberaxis.setTickLabelPaint(Color.RED);
  63. //坐标轴标尺颜色
  64. numberaxis.setTickMarkPaint(Color.BLUE);
  65. //丛坐标的默认间距值
  66. //numberaxis.setAutoTickUnitSelection(true);
  67. //设置丛坐标间距值
  68. numberaxis.setAutoTickUnitSelection(false);
  69. numberaxis.setTickUnit(newNumberTickUnit(150));
  70. //获取横坐标
  71. CategoryAxisdomainAxis=categoryPlot.getDomainAxis();
  72. //设置横坐标的标题字体和大小
  73. domainAxis.setLabelFont(newFont("宋体",Font.PLAIN,13));
  74. //设置横坐标的坐标值的字体颜色
  75. domainAxis.setTickLabelPaint(Color.RED);
  76. //设置横坐标的坐标值的字体
  77. domainAxis.setTickLabelFont(newFont("宋体",Font.PLAIN,30));
  78. //设置横坐标的显示
  79. domainAxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(0.4));
  80. //这句代码解决了底部汉字乱码的问题
  81. chart.getLegend().setItemFont(newFont("黑体",0,16));
  82. //设置图例标题
  83. Fontfont=newjava.awt.Font("黑体",java.awt.Font.CENTER_BASELINE,50);
  84. TextTitletitle=newTextTitle("项目状态分布");
  85. title.getBackgroundPaint();
  86. title.setFont(font);
  87. //设置标题的字体颜色
  88. title.setPaint(Color.RED);
  89. chart.setTitle(title);
  90. frame.pack();
  91. frame.setVisible(true);
  92. }
  93. }

原文链接:http://hefeng1987-net-163-com.iteye.com/blog/846041