【知了堂学习笔记】jfreechart创建简单的柱状图和饼图
来源:互联网 发布:qq音乐网站源码 编辑:程序博客网 时间:2024/05/21 10:43
jfreechart是什么?
JFreeChart是JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计。JFreeChart可生
成饼图(pie charts)、柱状图(bar charts)、散点图(scatter plots)、时序图(time series)、甘特图(Gantt charts)等等多种图表,并且可以产生PNG和JPEG格式的输出
利用jfreechart创建简单的柱状图和饼图
方式:创建web项目,采用outputstream输出图片
柱状图
图中的样式等都为默认效果,下面是实现的代码
public String createBarChart_01(HttpServletRequest request, HttpServletResponse response) throws IOException {DefaultCategoryDataset categoryDataset = new DefaultCategoryDataset();categoryDataset.addValue(110, "四川", "西瓜");categoryDataset.addValue(210, "四川", "苹果");categoryDataset.addValue(310, "四川", "荔枝");categoryDataset.addValue(410, "四川", "香蕉");JFreeChart jFreeChart = ChartFactory.createBarChart("水果销量", null, "销售值", categoryDataset);setChartByFont(jFreeChart);//解决乱码OutputStream os = response.getOutputStream();ChartUtilities.writeChartAsPNG(os, jFreeChart, 500, 300);os.flush();os.close();return null;}
下面为解决乱码的方法setChartByFont()
private void setChartByFont(JFreeChart jFreeChart) {TextTitle textTitle = jFreeChart.getTitle();textTitle.setFont(new Font("宋体",Font.BOLD,20));//设置标题的字体CategoryPlot categoryPlot = jFreeChart.getCategoryPlot();CategoryAxis categoryAxis = categoryPlot.getDomainAxis();//x轴对象ValueAxis valueAxis = categoryPlot.getRangeAxis();//y轴对象categoryAxis.setTickLabelFont(new Font("宋体",Font.BOLD,12));valueAxis.setLabelFont(new Font("宋体",Font.BOLD,12));LegendTitle legendTitle = jFreeChart.getLegend();if(legendTitle != null) {legendTitle.setItemFont(new Font("sans-serif", Font.BOLD, 12));}}
饼图
效果设置了部分图表的样式
public String createPieChart_01(HttpServletRequest request,HttpServletResponse response) throws IOException {DefaultPieDataset dataset = new DefaultPieDataset();dataset.setValue("初级程序员", 10000);dataset.setValue("中级程序员", 8000);dataset.setValue("高级程序员", 6000);dataset.setValue("架构师", 2000);dataset.setValue("项目经理", 6000);StandardChartTheme standardChartTheme = new StandardChartTheme("CN");standardChartTheme.setExtraLargeFont(new Font("隶书", Font.BOLD, 20));standardChartTheme.setRegularFont(new Font("宋书", Font.PLAIN, 15));standardChartTheme.setLargeFont(new Font("宋书", Font.PLAIN, 15));standardChartTheme.setLegendBackgroundPaint(new Color(238,238,224));// 设置标注背景色standardChartTheme.setLegendItemPaint(Color.BLACK);//设置字体颜色//standardChartTheme.setChartBackgroundPaint(new Color(174,238,238));//图表背景色standardChartTheme.setPlotBackgroundPaint(new Color(174,238,238));// 绘制区域standardChartTheme.setPlotOutlinePaint(new Color(174,238,238));// 绘制区域外边框ChartFactory.setChartTheme(standardChartTheme); JFreeChart chart=ChartFactory.createPieChart("IT行业职位分布图",dataset,true,true,false); //第一个参数是标题,第二个参数是一个数据集,第三个参数表示是否显示Legend,第四个参数表示是否显示提示,第五个参数表示图中是否存在URL chart.getLegend().setFrame(new BlockBorder(Color.WHITE));// 设置标注无边框 底部 //chart.getLegend().setPosition(RectangleEdge.RIGHT);// 标注位于右侧 PiePlot pieplot = (PiePlot) chart.getPlot(); pieplot.setLabelFont(new Font("宋体", 0, 15)); StandardPieSectionLabelGenerator standarPieIG = new StandardPieSectionLabelGenerator("{0}:({1},{2})", NumberFormat.getNumberInstance(),new DecimalFormat("0%")); pieplot.setLabelGenerator(standarPieIG); pieplot.setLabelOutlinePaint(null);// 去掉边框 pieplot.setMaximumLabelWidth(0.2);//边框宽度 pieplot.setLabelBackgroundPaint(new Color(180,238,180));//标签底色 OutputStream out = response.getOutputStream(); response.setContentType("image/jpeg"); // out,是一个OutputStream; // chart,是你生成的 JFreeChart 类的对象 // 后面两个是图片的大小 ChartUtilities.writeChartAsJPEG(out, chart, 600, 500); out.flush(); out.close();return null;}
解决乱码的方法上面的相同
有数值的3D柱状图
public String createBarChart_04(HttpServletRequest request, HttpServletResponse response) throws IOException {double[][] data = {{113,232,111,511},{252,141,512,311},{614,151,156,166},{513,514,161,512}};String[] rowKeys = {"西瓜","苹果","荔枝","香蕉"};String[] columnKeys = {"北京","上海","天津","重庆"};CategoryDataset categoryDataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data);JFreeChart jFreeChart = ChartFactory.createBarChart3D("水果销量", null, "销量值", categoryDataset, PlotOrientation.VERTICAL, true, false, false);setChartByFont(jFreeChart);//设置网络背景颜色CategoryPlot categoryPlot = jFreeChart.getCategoryPlot();categoryPlot.setBackgroundPaint(Color.WHITE);//设置网格竖线颜色categoryPlot.setDomainGridlinePaint(Color.PINK);//设置网络横线颜色categoryPlot.setRangeGridlinePaint(Color.PINK);//显示每个柱子的数值BarRenderer3D renderer = new BarRenderer3D();renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());renderer.setBaseItemLabelsVisible(true);//默认情况下柱子的数字是显示在柱子中,所以我们要改变他的显示方向renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT));renderer.setItemLabelAnchorOffset(10D);renderer.setItemLabelAnchorOffset(10D);//设置每个地区包含平行住之间的距离renderer.setItemMargin(0.3);//将渲染对象添加到图形对象中categoryPlot.setRenderer(renderer);//调整X和Y轴之间 对的位置方向categoryPlot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT); //Y轴方向categoryPlot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT); //X轴方向jFreeChart.getCategoryPlot().setBackgroundPaint(Color.WHITE);OutputStream os = response.getOutputStream();ChartUtilities.writeChartAsPNG(os, jFreeChart, 500, 300);os.flush();os.close();return null;}利用JDBC和数据库链接
第一步,创建数据库链接
public final static String USER_NAME = "root";public final static String PASSWORD= "123456";public final static String URL = "jdbc:mysql://localhost:3306/zhiliaotang";public final static String DRIVER = "com.mysql.jdbc.Driver";public jfree() {try {Class.forName(DRIVER);} catch (ClassNotFoundException e) {e.printStackTrace();}}
第二步,将数据库中的数据给图表的数据集
DefaultPieDataset dpd=new DefaultPieDataset(); //建立一个默认的饼图 Connection conn = DriverManager.getConnection(URL, USER_NAME, PASSWORD);String sql = "select * from depot";Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery(sql);while(rs.next()) { dpd.setValue(rs.getString(2),rs.getInt(3));}conn.close();
以上为实现的关键代码
需要注意的地方
在创建web项目的时候,jfreechart的jar包需要放在webcontent->WEB-INF->lib目录下,如果只是build path,编译的时候不会报错,但是在启动tomcat的时候会报错
阅读全文
1 0
- 【知了堂学习笔记】jfreechart创建简单的柱状图和饼图
- 【知了堂学习笔记】JfreeChart制作一些简单的报表
- 【知了堂学习笔记】JFreeChart
- 【知了堂学习笔记】String的创建过程—第一章
- 【知了堂学习笔记】JSTL的简单介绍
- [知了堂学习笔记]_Spring中AOP的简单理解
- [知了堂学习笔记]_jQuery入门和jQuery的选择器
- jfreechart饼图和柱状图ajax
- jfreechart饼图和柱状图 ajax
- 使用JFreeChart生成柱状图和饼图
- S2SH jFreeChart 制作柱状图和饼图
- [知了堂学习笔记]_break的用法
- [知了堂学习笔记]_JS的数据类型
- [知了堂学习笔记] jQuery的事件
- [知了堂学习笔记]_jQuery的事件
- 用JFreeChart来创建一个图表(饼图和柱状图,swn方式)
- Java学习笔记之jfreeChart 柱状图
- 【知了堂学习笔记】简单了解java集合类
- Postman发送Map参数
- [Azure]使用Powershell克隆ARM虚拟机(托管磁盘)
- C# byte数组转化位Bitmap
- 极大似然估计法推出朴素贝叶斯法中的先验概率估计公式
- Dinic 模板
- 【知了堂学习笔记】jfreechart创建简单的柱状图和饼图
- saxbuilder用法
- 传感器SensorManager
- python3.6 下连接mysql数据库实现用户登录与注册
- 矩形滑雪场
- 练习3
- Codeforces Round #430(Div.2) C,D,E题目详解
- Django学习的总结
- 数据结构 线性表