java jfreechart绘制柱状图

实例:

public class DrawColumnHistogram {


 public String draw(String path,double[] d1) {

        CategoryDataset dataset = createDataset(d1);
        JFreeChart chart = ChartFactory.createBarChart(
                                                "ACF图", // 图表标题
                                                "", // 目录轴的显示标签
                                                "平稳度", // 数值轴的显示标签
                                                dataset, // 数据集
                                                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                                                true,  // 是否显示图例(对于简单的柱状图必须是false)
                                                true,  // 是否生成工具
                                                true  // 是否生成URL链接
                                                );
        CategoryPlot plot = chart.getCategoryPlot();//获得图表区域对象
        //设置图表的纵轴和横轴org.jfree.chart.axis.CategoryAxis
        org.jfree.chart.axis.CategoryAxis domainAxis = plot.getDomainAxis();
        domainAxis.setLowerMargin(0.1);//设置距离图片左端距离此时为10%
        domainAxis.setUpperMargin(0.1);//设置距离图片右端距离此时为百分之10
        domainAxis.setCategoryLabelPositionOffset(10);//图表横轴与标签的距离(10像素)
        domainAxis.setCategoryMargin(0.2);//横轴标签之间的距离20%
        //domainAxis.setMaximumCategoryLabelLines(1);
        //domainAxis.setMaximumCategoryLabelWidthRatio(0);

        //设定柱子的属性
        org.jfree.chart.axis.ValueAxis rangeAxis = plot.getRangeAxis();
        rangeAxis.setUpperMargin(0.1);//设置最高的一个柱与图片顶端的距离(最高柱的10%)

        //设置图表的颜色
        org.jfree.chart.renderer.category.BarRenderer3D renderer;
        renderer = new org.jfree.chart.renderer.category.BarRenderer3D();
   
        renderer.setBaseOutlinePaint(Color.red);
        renderer.setSeriesPaint(0, new Color(0, 255, 255));//计划柱子的颜色为青色
        renderer.setSeriesOutlinePaint(0,Color.BLACK);//边框为黑色
        renderer.setSeriesPaint(1, new Color(0, 255, 0));//实报柱子的颜色为绿色
        renderer.setSeriesOutlinePaint(1,Color.red);//边框为红色
        renderer.setItemMargin(0.5);//组内柱子间隔为组宽的10%
        //显示每个柱的数值,并修改该数值的字体属性
        renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
        renderer.setItemLabelFont(new Font("黑体",Font.BOLD,12));//12号黑体加粗
        renderer.setItemLabelPaint(Color.black);//字体为黑色
        renderer.setItemLabelsVisible(true);
        plot.setRenderer(renderer);//使用我们设计的效果

        //设置纵横坐标的显示位置
        plot.setDomainAxisLocation(AxisLocation.BOTTOM_OR_LEFT);//学校显示在下端(柱子竖直)或左侧(柱子水平)
        plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT); //人数显示在下端(柱子水平)或左侧(柱子竖直)
        //解决中文乱码问题
        CategoryPlot categoryplot = (CategoryPlot) chart.getPlot();   
        NumberAxis numberaxis = (NumberAxis) categoryplot.getRangeAxis();     
        CategoryAxis domainAxis1 = categoryplot.getDomainAxis();     
        TextTitle textTitle = chart.getTitle();    
           
        textTitle.setFont(new Font("黑体", Font.PLAIN, 20));               
        domainAxis1.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 11));                 
        domainAxis1.setLabelFont(new Font("宋体", Font.PLAIN, 12));               
        numberaxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 12));             
        numberaxis.setLabelFont(new Font("黑体", Font.PLAIN, 12));                 
        chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12)); 

  //把图片写入指定路径,生成图片
  FileOutputStream fos_jpg = null;

  try {
   String imagePath = path+"\\fruit4.jpeg";
   fos_jpg = new FileOutputStream(path+"\\fruit4.jpeg");
   ChartUtilities
     .writeChartAsJPEG(fos_jpg,chart,400,300);
  } catch (Exception e) {
  } finally {
   try {
    fos_jpg.close();
   } catch (Exception e) {
   }
  }

  // 返回图片浏览路径
  return null;

 }   
     /**  
      * Creates a sample dataset.  
      *   
      * @return A dataset.  
      */  
     private CategoryDataset createDataset(double[] d1) {    
         final double[][] data = new double[][] {   
           d1 
          
         };   
         return DatasetUtilities.createCategoryDataset("Series ", "Factor ", data);   
     } 

}

jfreechart的jar包:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值