- 浏览: 1336221 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
kay11:
...
JAVA生成简单的随机字符串(a-zA-Z0-9) -
zhangliguoaccp:
您好关于登录页面的验验证码这块怎么解决的?还有登录成功后,跳转 ...
JAVA,模拟HTTP登录 -
107x:
不错,谢谢!
<c:foreach 循环 map -
wenjin:
不知楼主是不还在想请叫一下我自己开的Tomcat下载一个文件C ...
Android 下载文件及写入SD卡 -
zyywgf:
JSTL c标签,fn标签,fmt标签
jFreeChart利用CategoryDatase,ChartFactory.createBarChart生成的柱状图
- 博客分类:
- J2EE
package com.potevio.rnd; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.data.category.CategoryDataset; import org.jfree.data.general.DatasetUtilities; public class CreateJFreeChartBar { /** * 创建JFreeChart Bar Chart(柱状图) */ public static void main(String[] args) { //步骤1:创建CategoryDataset对象(准备数据) CategoryDataset dataset = createDataset(); //步骤2:根据Dataset 生成JFreeChart对象,以及做相应的设置 JFreeChart freeChart = createChart(dataset); //步骤3:将JFreeChart对象输出到文件,Servlet输出流等 saveAsFile(freeChart, "F:\\jfreechart\\bar.png", 500, 400); } //保存为文件 public static void saveAsFile(JFreeChart chart, String outputPath, int weight, int height) { FileOutputStream out = null; try { File outFile = new File(outputPath); if (!outFile.getParentFile().exists()) { outFile.getParentFile().mkdirs(); } out = new FileOutputStream(outputPath); //保存为PNG文件 ChartUtilities.writeChartAsPNG(out, chart, weight, height); //保存为JPEG文件 //ChartUtilities.writeChartAsJPEG(out, chart, weight, height); out.flush(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (out != null) { try { out.close(); } catch (IOException e) { //do nothing } } } } //根据CategoryDataset生成JFreeChart对象 public static JFreeChart createChart(CategoryDataset categoryDataset) { JFreeChart jfreechart = ChartFactory.createBarChart("Bar Chart Demo", //标题 "产品", //categoryAxisLabel (category轴,横轴,X轴的标签) "数量", //valueAxisLabel(value轴,纵轴,Y轴的标签) categoryDataset, // dataset PlotOrientation.VERTICAL, true, // legend false, // tooltips false); // URLs //以下的设置可以由用户定制,也可以省略 CategoryPlot plot = (CategoryPlot) jfreechart.getPlot(); //背景色 透明度 plot.setBackgroundAlpha(0.5f); //前景色 透明度 plot.setForegroundAlpha(0.5f); //其它设置可以参考 CategoryPlot return jfreechart; } /** * 创建CategoryDataset对象 * */ public static CategoryDataset createDataset() { String []rowKeys = {"One", "Two", "Three"}; String []colKeys = {"1987", "1997", "2007"}; double [][] data = { {50, 20, 30}, {20, 10D, 40D}, {40, 30.0008D, 38.24D}, }; //也可以使用以下代码 //DefaultCategoryDataset categoryDataset = new DefaultCategoryDataset(); //categoryDataset.addValue(10, "rowKey", "colKey"); return DatasetUtilities.createCategoryDataset(rowKeys, colKeys, data); } }
运行效果图:
附上另外一份代码:
package com; import java.awt.Color; import java.awt.Font; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; 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.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.chart.title.TextTitle; import org.jfree.data.category.CategoryDataset; import org.jfree.data.general.DatasetUtilities; import org.jfree.ui.TextAnchor; public class CreateJFreeChartBar3 { public static void main(String[] args) { //步骤1:创建CategoryDataset对象(准备数据) CategoryDataset dataset = createDataset(); //步骤2:根据Dataset 生成JFreeChart对象,以及做相应的设置 JFreeChart freeChart = createChart(dataset); //步骤3:将JFreeChart对象输出到文件,Servlet输出流等 saveAsFile(freeChart, "E:\\jfreechart\\batpic.png", 600, 500); } //保存为文件 public static void saveAsFile(JFreeChart chart, String outputPath, int weight, int height) { FileOutputStream out = null; try { File outFile = new File(outputPath); if (!outFile.getParentFile().exists()) { outFile.getParentFile().mkdirs(); } out = new FileOutputStream(outputPath); //保存为PNG文件 ChartUtilities.writeChartAsPNG(out, chart, weight, height); //保存为JPEG文件 //ChartUtilities.writeChartAsJPEG(out, chart, weight, height); out.flush(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (out != null) { try { out.close(); } catch (IOException e) { //do nothing } } } } //根据CategoryDataset生成JFreeChart对象 public static JFreeChart createChart(CategoryDataset categoryDataset) { JFreeChart jfreechart = ChartFactory.createBarChart("", //标题 "人员", //categoryAxisLabel (category轴,横轴,X轴的标签) "次数", //valueAxisLabel(value轴,纵轴,Y轴的标签) categoryDataset, // dataset PlotOrientation.VERTICAL, true, // legend false, // tooltips false); // URLs TextTitle title = jfreechart.getTitle(); title.setFont(new Font("宋体", Font.BOLD, 12)); //以下的设置可以由用户定制,也可以省略 // 取得状图plot对象 CategoryPlot plot = (CategoryPlot) jfreechart.getPlot(); plot.setBackgroundPaint(Color.lightGray); // plot.setBackgroundPaint(new Color(255, 255, 204));// 设置柱图背景色(注意,系统取色的时候要使用16位的模式来查看颜色编码,这样比较准确) plot.setRangeGridlinesVisible(true);// 设置横虚线可见 plot.setRangeGridlinePaint(Color.gray);// 虚线色彩 // x轴设置 CategoryAxis domainAxis = plot.getDomainAxis(); //domainAxis.setLabelFont(labelFont);// 轴标题 //domainAxis.setTickLabelFont(labelFont);// 轴数值 domainAxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(Math.PI / 3.0));//度倾斜 domainAxis.setMaximumCategoryLabelWidthRatio(0.6f);// 横轴上的 Lable 是否完整显示 domainAxis.setLowerMargin(0.05);// 设置距离图片左端距离 domainAxis.setUpperMargin(0.05);// 设置距离图片右端距离 plot.setDomainAxis(domainAxis); domainAxis.setLabelFont(new Font("宋体", Font.BOLD, 12));// X轴的标题文字字体 隶书 domainAxis.setTickLabelFont(new Font("宋体", Font.BOLD, 12));// X轴坐标上数值字体 // domainAxis.setCategoryLabelPositions(CategoryLabelPositions.DOWN_45); // X轴上的Lable让其45度倾斜 .UP_45 // y轴设置 ValueAxis rangeAxis = plot.getRangeAxis(); //rangeAxis.setLabelFont(labelFont); //rangeAxis.setTickLabelFont(labelFont); // rangeAxis.setRange(85, 100.5);//纵轴显示范围 rangeAxis.setAutoTickUnitSelection(true); rangeAxis.setUpperMargin(0.15);// 设置最高的一个 Item 与图片顶端的距离 rangeAxis.setLowerMargin(0.15);// 设置最低的一个 Item 与图片底端的距离 //设置 柱子的提示 中文处理 jfreechart.getLegend().setItemFont(new Font("宋体", Font.BOLD,10)); //plot.setRangeAxis(rangeAxis); // Y轴精度 NumberAxis vn = (NumberAxis) plot.getRangeAxis(); DecimalFormat df = new DecimalFormat("#0"); vn.setNumberFormatOverride(df); // 数据轴数据标签的显示格式 rangeAxis.setAutoTickUnitSelection(true);//步长自动设置 rangeAxis.setStandardTickUnits(NumberAxis.createStandardTickUnits());//纵轴单元为整型 rangeAxis.setLabelFont(new Font("宋体", Font.BOLD, 12));// y轴的标题文字字体 rangeAxis.setTickLabelFont(new Font("宋体", Font.BOLD, 12));// y轴坐标上数值字体 //柱子属性 BarRenderer renderer = new BarRenderer(); renderer.setMaximumBarWidth(0.1);// 设置柱子宽度//TODO 0.05 renderer.setMinimumBarLength(0.2);// 设置柱子高度 renderer.setBaseOutlinePaint(Color.BLACK);// 设置柱子边框颜色 renderer.setDrawBarOutline(true);// 设置柱子边框可见 //renderer.setSeriesPaint(0, new Color(51, 204, 204));// 设置柱的颜色 //renderer.setSeriesPaint(1, new Color(253, 204, 255)); for(int i = 0 ; i < 10; i++){ renderer.setSeriesPaint(i, Color.decode("#2EDE1E")); renderer.setSeriesOutlinePaint(i, Color.BLACK); } renderer.setItemMargin(0.0);// 设置每个地区所包含的平行柱的之间距离 // 显示每个柱的数值,并修改该数值的字体属性 renderer.setIncludeBaseInRange(true); renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator()); renderer.setBaseItemLabelsVisible(true); renderer.setBaseItemLabelFont(new Font("宋体", Font.BOLD, 12));// 数值字体TRUETYPE_FONT renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12,TextAnchor.BASELINE_CENTER));//数值显示位置 plot.setRenderer(renderer); plot.setForegroundAlpha(1.0f);// 设置柱的透明度 // //背景色 透明度 // plot.setBackgroundAlpha(0.5f); // //前景色 透明度 // plot.setForegroundAlpha(0.5f); return jfreechart; } /** * 创建CategoryDataset对象 * */ public static CategoryDataset createDataset() { String []rowKeys = {"次数"}; String []colKeys = {"一二", "二二", "三二","三一", "二三二", "二三三","二三五", "二三四", "二三六","一二三"}; double [][] data = { {50,41,30,20,29,45,21,32,40,38} }; return DatasetUtilities.createCategoryDataset(rowKeys, colKeys, data); } }
运行效果图:
评论
3 楼
tanghedeyu
2010-06-24
我在官网上找个下,下了jfreechart-1.0.13.tar.gz这个包,把jfreechart-1.0.13.jar跟jcommon-1.0.13.jar这个2个包导入了,还是报java.lang.NoClassdefFoundError:org.jfree.chart.chartFactory这个错误
2 楼
zjx2388
2010-06-24
tanghedeyu 写道
请问下,你在unix+was环境运行过jfree嘛?我部署程序后org.jfree.chart.chartFactory不能被找到,报错java.lang.NoClassDefFoundError。windows下可以的。
没在unix下运行过
你去找找jfree的包,是不是区分不同的系统
1 楼
tanghedeyu
2010-06-23
请问下,你在unix+was环境运行过jfree嘛?我部署程序后org.jfree.chart.chartFactory不能被找到,报错java.lang.NoClassDefFoundError。windows下可以的。
发表评论
-
Spring 和JFreeChart 用出现Unable to validate using XSD
2012-08-09 17:31 1782错误显示: 信息: XML validation disab ... -
web.xml不认<taglib>解决办法:
2012-07-11 15:24 969在web.xml不认<taglib>解决办法: ... -
Portal服务器,Portlet容器,Portlet 的区别
2011-08-24 17:06 1659这里所说的Portal是指JCP-JSR168规范所描述的 ... -
AMF,RTMP,RTMPT,RTMPS(转)
2011-04-28 13:10 19301. AMF AMF(是Action Message F ... -
web.xml 中的listener,filter,servlet 加载顺序
2011-04-22 13:35 1106首先,加载顺序与它们 ... -
JDOM修改XML中指定节点的内容
2011-03-21 09:45 2192UpdateXML 写道 package com.util; ... -
SSH配置多个数据源
2011-01-18 16:35 9901SSH配置多个数据源 1. 编写hibernate的数据库配 ... -
SSH中调用存储过程
2010-12-29 08:46 5589SSH中调用带返回结果集的存储过程: public clas ... -
HibernateDaoSupport与JdbcDaoSupport总结
2010-12-28 13:56 1362Spring框架中Dao支持总结:Dao 的支持类可以有 ... -
DBCP,CP30及proxool连接池在spring+hibernate中的配置
2010-12-22 17:08 5937用spring默认的连接池性能效率不高, 如果数据库重启, 应 ... -
IP过滤DEMO
2010-11-01 15:59 1270import java.io.IOException; im ... -
FCKEditor Demo
2010-11-01 15:56 2003FCKEditor 的官方下载: http://source ... -
htmlunit带框架的简单处理测试demo
2010-07-07 14:58 3761package com.htmlunit.test; i ... -
模式在SSH中的简单举例
2010-05-17 14:37 1106闲着没事,瞎想,回想了几个简单的模式在SSH的应用。有不对的还 ... -
AspectJ入门 安装及简单使用
2010-05-15 19:20 7112一、下载安装 1. download http: ... -
org.apache.commons.lang.RandomStringUtils
2010-05-05 09:01 2027来自包:apache的commons-lang.jar包下载: ... -
spring字符集过滤器配置
2010-05-04 14:53 2637<!-- spring的字符集过滤器 --> ... -
Cannot instantiate abstract class or interface
2010-05-03 22:49 3972org.hibernate.InstantiationExce ... -
org.hibernate.hql.ast.QuerySyntaxException: ? is not mapped
2010-05-03 21:52 41502010-5-3 21:48:23 org.apache.ca ... -
java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit
2010-05-03 21:32 4205MyEclipse 开发 SSH 整合时 java.la ...
相关推荐
JFreeChart是一个流行的Java库,用于生成各种类型的图表,包括折线图、饼图和柱状图,甚至堆栈柱状图。这个压缩包中的"CreateChartServiceImpl.java"文件很可能包含了一个实现这些功能的服务类。 首先,我们要理解...
总结来说,Java生成柱状图和折线图主要依赖于JFreeChart库,通过创建数据集、构建图表对象以及在GUI中展示,可以轻松实现数据的可视化。JCommon库则为JFreeChart提供了基础支持。开发者可以通过学习这些库的API,...
JFreeChart barChart = ChartFactory.createBarChart3D("3D柱状图", "X轴", "Y轴", barDataset); // 保存柱状图到指定目录 ChartUtilities.saveChartAsJPEG(new File("/path/to/output/barchart.jpg"), barChart, ...
JFreeChart chart = ChartFactory.createBarChart("单组柱状图标题", "类别", "值", dataset); // 创建柱状图 ``` ### 三、生成多组柱状图 如果需要对比多个组的数据,可以使用堆积柱状图。JFreeChart 提供了 `...
JFreeChart是一款强大的Java图表库,它允许开发者在Java应用程序或网页中生成各种高质量的图形,包括饼图、折线图、柱状图等。在本示例中,我们将深入探讨如何利用JFreeChart库来创建这些常见的图表类型。 ### 饼图...
JFreeChart是一款强大的Java图表库,它允许开发者在应用程序、Swing组件或Web应用中创建出各种复杂的图表,包括线状图、饼状图和柱状图。这些图表类型广泛应用于数据分析、报告制作以及可视化展示等领域。下面我们将...
然后,使用`JFreeChart.createBarChart()`方法生成柱状图。 2. **饼图(Pie Chart)** 饼图用于显示整体中各个部分的比例。JFreeChart提供了`PieDataset`接口,用来存储数据,然后通过`JFreeChart.createPieChart...
JFreeChart是一款开源的Java图表库,它能够生成各种类型的图表,如折线图、柱状图、饼图等。但在实际应用中,尤其是当图表标题、轴标签或图例包含中文字符时,很容易出现乱码问题。这主要是因为JFreeChart默认使用的...
JFreeChart是一款强大的Java库,用于创建各种图表,包括柱状图、饼状图和3D饼状图等。在Java编程中,JFreeChart是一个非常实用的工具,它允许开发者轻松地在应用程序中集成数据可视化功能。下面将详细介绍如何使用...
使用`ChartFactory.createBarChart()`方法创建柱状图。 ```java JFreeChart chart = ChartFactory.createBarChart( "柱状图示例", // 图表标题 "分类", // X轴标签 "值", // Y轴标签 dataset, // 数据集 ...
创建3D柱状图,可以使用`ChartFactory.createBarChart3D()`方法。同样,你需要一个`CategoryDataset`,其中包含行标识(类别)和列标识(系列)。`CategoryPlot`的`Renderer`应设置为`BarRenderer3D`,以实现3D效果...
本篇文章将详细讲解如何利用 JFreeChart 创建不同的图表类型,包括饼状图、单组柱状图、多组柱状图以及堆积柱状图。 首先,你需要从官方网站或指定的源获取 JFreeChart 的最新版本,例如 jfreechart-1.0.13.jar,...
根据给定的信息,本文将详细解释如何使用JFreeChart库生成单组3D变色柱状图,并确保每个柱子的颜色不同。此方法对于需要在报告、数据分析或可视化项目中展示数据时非常有用。 ### 一、理解标题与描述 #### 1.1 ...
在JFreeChart中,你可以使用`CategoryDataset`来存储数据,然后创建`JFreeChart`实例,最后使用`ChartFactory.createBarChart()`方法生成柱状图。你可以自定义每个类别的标签,设置柱子的颜色,甚至添加工具提示和...
true, // 是否显示图例 ( 对于简单的柱状图必须是false) false, // 是否生成工具 false // 是否生成 URL 链接 ); //从这里开始 CategoryPlot plot=chart.getCategoryPlot();//获取图表区域对象 CategoryAxis ...
其中:createBarChart3D方法是ChartFactory工厂类里的一个方法,用于生成3D柱状图,该类继承自JFreeChart。 3. 设置图形显示的属性: a) ValueAxis类,设置柱到图上下边的距离。实现方法是:ValueAxis rangeAxis = ...
2. **创建 ChartFactory**:JFreeChart 提供了多种预设的 ChartFactory,例如 `JFreeChart chart = ChartFactory.createBarChart()` 可以快速创建一个柱状图。 ### 二、主要图表类型 1. **饼图**:`ChartFactory....
JFreeChart chart = ChartFactory.createBarChart( "柱状图示例", // 图表标题 "类别", // 分类轴标签 "值", // 值轴标签 dataset // 数据集 ); CategoryPlot plot = chart.getCategoryPlot(); plot....
JFreeChart提供了`CategoryDataset`来存储数据,通过`createBarChart()`方法创建柱状图。可以调整柱子的宽度、颜色以及X轴和Y轴的标签。 ```java CategoryDataset dataset = ... // 创建数据集 JFreeChart chart = ...