JFreeChart生成BarChart之CategoryDataset方式

种类: 柱形图(Bar Chart)比饼行图复杂,生成的图表数据需要有两个纬度。两个纬度从数据集的生成角度分,可以分按照类别

分为数据集(DefaultCategoryDataset)和XY分的数据集(XYDataset)两中。

 下面简单介绍DefaultCategoryDataset方式生成柱形图(乱码问题忽略)。        

protected void doGet(HttpServletRequest req, HttpServletResponse resp)
   throws ServletException, IOException {
  resp.setContentType("image/png");
  CategoryDataset categoryDateset = createCategoryDataset();
  JFreeChart jFreeChart = ChartFactory.createBarChart("",
    "季度", "销量", categoryDateset, PlotOrientation.VERTICAL, true,
    true, false);  
  jFreeChart.setTitle(new TextTitle("2012年图书销售统计",new Font("宋体",Font.BOLD,15)));
  
  CategoryPlot categoryPlot = (CategoryPlot) jFreeChart.getPlot();
  
  // 设置网格线可见
  categoryPlot.setDomainGridlinesVisible(true);
  // x轴
  CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
  //设置倾斜角度
  categoryAxis.setCategoryLabelPositions(CategoryLabelPositions
    .createUpRotationLabelPositions(0.33f));
  //设置边界距离
  categoryAxis.setCategoryMargin(0.02D);
  //获取图形对象
  BarRenderer barRenderer = (BarRenderer) categoryPlot.getRenderer();
  barRenderer.setDrawBarOutline(false);
  ChartUtilities.writeChartAsPNG(resp.getOutputStream(), jFreeChart, 300, 250);
  
 }

 private CategoryDataset createCategoryDataset() {
  String[] quarter = new String[] { "第1季度", "第2季度", "第3季度", "第4季度" };
  String[] language = new String[] { "java", "C++", ".net", "android",
    "delphi" };
  DefaultCategoryDataset categoryDataset = new DefaultCategoryDataset();
  for (String colCell : quarter) {
   for (String rowCell : language) {
    categoryDataset.setValue(DataUtils.getRandomNumber(), rowCell,
      colCell);
   }
  }
  return categoryDataset;
 }

 @Override
 protected void doPost(HttpServletRequest req, HttpServletResponse resp)
   throws ServletException, IOException {
  doGet(req, resp);
 }

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值