《Java JFreeChart柱状图单组柱子的不同颜色显示.doc》由会员分享,可在线阅读,更多相关《Java JFreeChart柱状图单组柱子的不同颜色显示.doc(5页珍藏版)》请在金锄头文库上搜索。
1、Java JFreeChart柱状图单组柱子的不同颜色显示JFreeChart柱状图中单组柱子用不同颜色来显示的实现方法是自定义一个Renderer来继承BarRenderer类,然后重载getItemPaint(int i,int j)方法。实现效果如下:实现代码如下:htmlview plaincopy1. publicclassCustomRendererextendsorg.jfree.chart.renderer.category.BarRenderer2. 3. /*4. *5. */6. privatestaticfinallongserialVersionUID=7846302
2、26449158436L;7. privatePaintcolors;8. /初始化柱子颜色9. privateStringcolorValues=#AFD8F8,#F6BD0F,#8BBA00,#FF8E46,#008E8E,#D64646;10. 11. publicCustomRenderer()12. colors=newPaintcolorValues.length;13. for(inti=0;icolorValues.length;i+)14. colorsi=Color.decode(colorValuesi);15. 16. 17. 18. /每根柱子以初始化的颜色不断轮循1
3、9. publicPaintgetItemPaint(inti,intj)20. returncolorsj%colors.length;21. 22. htmlview plaincopy1. publicclassCreateJFreeChartBarColor2. 3. /*4. *创建JFreeChartBarChart(柱状图)5. */6. publicstaticvoidmain(Stringargs)7. /步骤1:创建CategoryDataset对象(准备数据)8. CategoryDatasetdataset=createDataset();9. /步骤2:根据Datas
4、et生成JFreeChart对象,以及做相应的设置10. JFreeChartfreeChart=createChart(dataset);11. /步骤3:将JFreeChart对象输出到文件,Servlet输出流等12. saveAsFile(freeChart,E:bar.png,500,400);13. 14. 15. /保存为文件16. publicstaticvoidsaveAsFile(JFreeChartchart,StringoutputPath,intweight,intheight)17. FileOutputStreamout=null;18. try19. Fileo
5、utFile=newFile(outputPath);20. if(!outFile.getParentFile().exists()21. outFile.getParentFile().mkdirs();22. 23. out=newFileOutputStream(outputPath);24. /保存为PNG文件25. ChartUtilities.writeChartAsPNG(out,chart,weight,height);26. out.flush();27. catch(FileNotFoundExceptione)28. e.printStackTrace();29. ca
6、tch(IOExceptione)30. e.printStackTrace();31. finally32. if(out!=null)33. try34. out.close();35. catch(IOExceptione)36. /donothing37. 38. 39. 40. 41. 42. /根据CategoryDataset生成JFreeChart对象43. publicstaticJFreeChartcreateChart(CategoryDatasetcategoryDataset)44. JFreeChartjfreechart=ChartFactory.createBa
7、rChart(学生统计图,/标题45. 学生姓名,/categoryAxisLabel(category轴,横轴,X轴的标签)46. 年龄,/valueAxisLabel(value轴,纵轴,Y轴的标签)47. categoryDataset,/dataset48. PlotOrientation.VERTICAL,false,/legend49. false,/tooltips50. false);/URLs51. 52. FontlabelFont=newFont(SansSerif,Font.TRUETYPE_FONT,12);53. 54. jfreechart.setTextAnti
8、Alias(false);55. jfreechart.setBackgroundPaint(Color.white);56. 57. CategoryPlotplot=jfreechart.getCategoryPlot();/获得图表区域对象58. 59. /设置横虚线可见60. plot.setRangeGridlinesVisible(true);61. /虚线色彩62. plot.setRangeGridlinePaint(Color.gray);63. /数据轴精度64. NumberAxisvn=(NumberAxis)plot.getRangeAxis();65. /vn.se
9、tAutoRangeIncludesZero(true);66. DecimalFormatdf=newDecimalFormat(#0.0);67. vn.setNumberFormatOverride(df);/数据轴数据标签的显示格式68. 69. /x轴设置70. CategoryAxisdomainAxis=plot.getDomainAxis();71. domainAxis.setLabelFont(labelFont);/轴标题72. domainAxis.setTickLabelFont(labelFont);/轴数值73. /Lable(Math.PI/3.0)度倾斜74.
10、 /domainAxis.setCategoryLabelPositions(CategoryLabelPositions75. /.createUpRotationLabelPositions(Math.PI/3.0);76. domainAxis.setMaximumCategoryLabelWidthRatio(6.00f);/横轴上的Lable77. /是否完整显示78. 79. /设置距离图片左端距离80. domainAxis.setLowerMargin(0.1);81. /设置距离图片右端距离82. domainAxis.setUpperMargin(0.1);83. /设置c
11、olumnKey是否间隔显示84. /domainAxis.setSkipCategoryLabelsToFit(true);85. plot.setDomainAxis(domainAxis);86. /设置柱图背景色(注意,系统取色的时候要使用16位的模式来查看颜色编码,这样比较准确)87. plot.setBackgroundPaint(newColor(255,255,204);88. 89. /y轴设置90. ValueAxisrangeAxis=plot.getRangeAxis();91. rangeAxis.setLabelFont(labelFont);92. rangeAxis.setTickLabelFont(labelFont);93. /设置最高的一