jfreechart 画柱状图.(二维实例参照)

jfreechart 画柱状图.(二维实例参照)

这一次直接调用方法输出,初学着想知道SSM框架怎么调用可参考上篇博文

jfreechart 画饼图.(二维和3D实例参照)

部分代码参考百度,如侵权致歉,通知删除

package com.zttech.demo.controller;

import java.awt.Color;
import java.awt.Font;
import java.io.File;
import java.text.DecimalFormat;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.NumberTickUnit;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.labels.ItemLabelAnchor;
import org.jfree.chart.labels.ItemLabelPosition;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.data.RangeType;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.TextAnchor;

public class aaa {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		DefaultCategoryDataset dateSet = new DefaultCategoryDataset();
		dateSet.setValue(4.5, "学习", "第一周");
		dateSet.setValue(0.5, "实例检验", "第一周");
		dateSet.setValue(4, "学习", "第二周");
		dateSet.setValue(1, "实例检验", "第二周");
		dateSet.setValue(3, "学习", "第三周");
		dateSet.setValue(2, "实例检验", "第三周");
		dateSet.setValue(2.5, "学习", "第四周");
		dateSet.setValue(2.5, "实例检验", "第四周");
		dateSet.setValue(2, "学习", "第五周");
		dateSet.setValue(3, "实例检验", "第五周");
		dateSet.setValue(1, "学习", "第六周");
		dateSet.setValue(4, "实例检验", "第六周");
		dateSet.setValue(3, "学习", "第七周");
		dateSet.setValue(2, "实例检验", "第七周");
		dateSet.setValue(1, "学习", "第八周");
		dateSet.setValue(4, "实例检验", "第八周");
		dateSet.setValue(3, "学习", "至今");
		dateSet.setValue(2, "实例检验", "至今");
		// dateSet.setValue(10,"坏","大\n梨");
		String filePath = "D:\\picture\\学习柱状图.png";
		columnarChart(dateSet, filePath);

	}

	public static void columnarChart(DefaultCategoryDataset dateSet, String filePath) {
		// TODO Auto-generated method stub
		try {

			JFreeChart chart = ChartFactory.createBarChart("培训学习及实例检验所花时间柱状图", // 标题
					"所花时间对比", // 目录轴的显示标签
					"单位:天", // 数值的显示标签
					dateSet, // 数据
					PlotOrientation.VERTICAL, // 图标方向 水平/垂直
					true, // 是否显示图例
					false, // 是否生成工具
					false); // 是否生成URL链接

			CategoryPlot categoryPlot = chart.getCategoryPlot();// 图部分
			// 设置网格beijingse
			categoryPlot.setBackgroundPaint(Color.WHITE);
			// 设置网格竖线颜色
			categoryPlot.setDomainGridlinePaint(Color.pink);
			// 设置网格横线颜色
			categoryPlot.setRangeGridlinePaint(Color.pink);

			CategoryAxis domainAxis = categoryPlot.getDomainAxis();// X轴
			/**
			 * 注释:若想字符竖着显示: 比如: 我 爱 中 国 在添加数据的时候这样:
			 * dateSet.setValue(10,"www.ixj.com","我\n爱\n中\n国");
			 */
			domainAxis.setCategoryLabelPositions(CategoryLabelPositions.STANDARD);// X轴下标 90°显示
			domainAxis.setMaximumCategoryLabelLines(10);// 自动换行 最多显示多少行
			domainAxis.setLabelFont(new Font("黑体", Font.BOLD, 25));// 下标
			domainAxis.setTickLabelFont(new Font("宋体", Font.BOLD, 20));// X轴标题

			ValueAxis rangeAxis = categoryPlot.getRangeAxis();// Y轴
			rangeAxis.setLabelFont(new Font("黑体", Font.BOLD, 25));// 下标
			rangeAxis.setTickLabelFont(new Font("宋体", Font.BOLD, 20));// Y轴标题

			NumberAxis numberAxis = (NumberAxis) categoryPlot.getRangeAxis();
			numberAxis.setAutoTickUnitSelection(false);// 取消自动设置Y轴刻度
			numberAxis.setTickUnit(new NumberTickUnit(2));// 刻度大小
			numberAxis.setAutoRangeStickyZero(true);// 和下面一行搭配使用 设置Y轴都是正数
			numberAxis.setRangeType(RangeType.POSITIVE);
			numberAxis.setNumberFormatOverride(new DecimalFormat("0.0"));// 设置Y轴上的数值精度

			chart.getLegend().setItemFont(new Font("黑体", Font.BOLD, 20));// 图标字体
			chart.getTitle().setFont(new Font("黑体", Font.BOLD, 25));
			BarRenderer renderer = (BarRenderer) categoryPlot.getRenderer();// 图形修改
			// 设置标签生成器(默认{0})
			// {0}:key {1}:value {2}:百分比 {3}:sum
			renderer.setBaseItemLabelGenerator(
					new StandardCategoryItemLabelGenerator("{2}天", new DecimalFormat("0.0")));// 设置柱状图上的数值精度
			renderer.setItemMargin(0);// 设置柱子之间的距离
			renderer.setPositiveItemLabelPositionFallback(
					new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BOTTOM_CENTER));
			renderer.setBaseItemLabelFont(new Font("黑体", Font.BOLD, 15));
			renderer.setDrawBarOutline(false);
			renderer.setMaximumBarWidth(0.2); // 设置柱子宽度
			renderer.setMinimumBarLength(0.00); // 设置柱子高度
			renderer.setBaseItemLabelsVisible(true);// 柱状体上的数值显示
			File file = new File(filePath);
			if (file.exists()) {
				file.delete();
				file.createNewFile();
			}
			ChartUtilities.saveChartAsPNG(file, chart, 1200, 900);
		} catch (Exception e) {
			throw new RuntimeException("柱状图格式错误!");
		}
	}

}

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值