jfreechart如何利用jfreechart生成柱状,饼状,折线形图形。

jfreechart  时间:2021-06-16  阅读:()

用jfreechart怎么生成类似于这样的图片

这个是个完整的代码,保存路径是临时文件。

public class CategoryItemChart { public static String generateBarChart(HttpSession session, PrintWriter pw,int w, int h,ArrayList list) { String filename = null; try { CategoryDataset dataset = createDataset(list); JFreeChart chart = ChartFactory.createBarChart( "",//图表标题 "",//X轴标题 "",//Y轴标题 dataset,//数据集合 PlotOrientation.VERTICAL,//图表显示方向(水平、垂直) true,//是否使用图例 true,//是否使用工具提示 false//是否为图表增加URL ); /*------------配置图表属性--------------*/ chart.setBackgroundPaint(Color.white); // 1,设置整个图表背景颜色 CategoryPlot plot = chart.getCategoryPlot(); /*------------设定Plot参数-------------*/ plot.setBackgroundPaint(Color.white); // 2,设置详细图表的显示细节部分的背景颜色 plot.setDomainGridlinePaint(Color.black); // 3,设置垂直网格线颜色 plot.setDomainGridlinesVisible(false); // 4,设置是否显示垂直网格线 plot.setRangeGridlinePaint(Color.yellow); // 5,设置水平网格线颜色 plot.setRangeGridlinesVisible(false); //6,设置是否显示水平网格线 /*---------将所有数据转换为整数形式---------*/ final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); /*---------设置是否在柱图的状态条上显示边框----*/ CategoryItemRenderer renderer = (CategoryItemRenderer) plot.getRenderer(); BarRenderer render = (BarRenderer) plot.getRenderer(); // render.setItemMargin(0.0); // render.setMinimumBarLength(0.0); /*---------设置状态条颜色的深浅渐变-----------*/ GradientPaint gp0 = new GradientPaint(0.0f, 0.0f, new Color(255,200, 80), 0.0f, 0.0f, new Color(255, 255, 40)); GradientPaint gp1 = new GradientPaint(0.0f, 0.0f, new Color(50,255, 50), 0.0f, 0.0f, new Color(100, 255, 100)); GradientPaint gp2 = new GradientPaint(0.0f, 0.0f, Color.red, 0.0f,0.0f, new Color(255, 100, 100)); GradientPaint gp3 = new GradientPaint(0.0f, 0.0f, new Color(108,108, 255), 0.0f, 0.0f, new Color(150, 150, 200)); renderer.setSeriesPaint(0, gp0); renderer.setSeriesPaint(1, gp1); renderer.setSeriesPaint(2, gp2); renderer.setSeriesPaint(3, gp3); /* * * 解决柱状体与图片边框的间距问题 * * * */ /*------设置X轴标题的倾斜程度----*/ CategoryAxis domainAxis = plot.getDomainAxis(); domainAxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(Math.E / 6.0)); /*------设置柱状体与图片边框的左右间距--*/ domainAxis.setLowerMargin(0.06); domainAxis.setUpperMargin(0.06); /*------设置柱状体与图片边框的上下间距---*/ ValueAxis rAxis = plot.getRangeAxis(); rAxis.setUpperMargin(0.3); rAxis.setLowerMargin(0.3); /*---------设置每一组柱状体之间的间隔---------*/ render.setItemMargin(0.01); /* * * 解决柱状体与图片边框的间距问题 * * * */ /* * * * 解决JFREECHART的中文显示问题 * * * */ /*----------设置消除字体的锯齿渲染(解决中文问题)--------------*/ chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_OFF); /*----------设置标题字体--------------------------*/ TextTitle textTitle = chart.getTitle(); textTitle.setFont(new Font("黑体", Font.PLAIN, 20)); /*------设置X轴坐标上的文字-----------*/ domainAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 11)); /*------设置X轴的标题文字------------*/ domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12)); /*------设置Y轴坐标上的文字-----------*/ rAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 14)); /*------设置Y轴的标题文字------------*/ rAxis.setLabelFont(new Font("黑体", Font.PLAIN, 12)); /*---------设置柱状体上的显示的字体---------*/ renderer.setBaseItemLabelFont(new Font("宋体", Font.PLAIN, 12)); renderer.setBaseItemLabelGenerator(new LabelGenerator(0.0)); renderer.setBaseItemLabelsVisible(true); /* * * * 解决JFREECHART的中文显示问题 * * * */ /*------得到chart的保存路径----*/ ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection()); filename = ServletUtilities.saveChartAsPNG(chart, w, h, info,session); /*------使用printWriter将文件写出----*/ ChartUtilities.writeImageMap(pw, filename, info, true); pw.flush(); } catch (Exception e) { System.out.println("Exception - " + e.toString()); e.printStackTrace(System.out); filename = "public_error_500x300.png"; } return filename; } /*-------------设置柱状体顶端的数据显示--------------*/ static class LabelGenerator implements CategoryItemLabelGenerator { private double threshold; public LabelGenerator(double threshold) { this.threshold = threshold; } public String generateLabel(CategoryDataset dataset, int row, int column) { String result = null; final Number value = dataset.getValue(row, column); if (value != null) { final double v = value.doubleValue(); if (v > this.threshold) { result = value.toString(); } } return result; } public String generateRowLabel(CategoryDataset dataset, int row) { return null; } public String generateColumnLabel(CategoryDataset dataset, int column) { return null; } } /*-----------数据集合封装-------------*/ private static CategoryDataset createDataset(ArrayList list) { String s1 = "1"; String s2 = "2"; String c1 = "1"; String c2 = "2"; /*-------------封装图表使用的数据集-------------*/ DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.setValue(44, s1, c1); dataset.setValue(48, s2, c2); return dataset; } }

如何在eclipse中配置JFreeChart

web.xml按下面配置就行了 <servlet> <servlet-name>DisplayChart</servlet-name> <servlet-class&.jfree.chart.servlet.DisplayChart</servlet-class> </servlet> <servlet-mapping> <servlet-name>DisplayChart</servlet-name> <url-pattern>/servlet/DisplayChart</url-pattern> </servlet-mapping>

jfreechart 以周为单位,怎么做啊?

Axis();//设置x轴,也就是时间轴 x1Axis.setAutoRange(false);//设置不采用自动设置时间范围 try{ x1Axis.setRange(dateFormat.parse("2007-08-20"),dateFormat.parse("2007-09-29"));//设置时间范围,注意时间的最大值要比已有的时间最大值要多一天 }catch(Exception e){ e.printStackTrace(); } x1Axis.setTimeline(SegmentedTimeline.newMondayThroughFridayTimeline());//设置时间线显示的规则, x1Axis.setAutoTickUnitSelection(false);//设置不采用自动选择刻度值 x1Axis.setTickMarkPosition(DateTickMarkPosition.MIDDLE);//设置标记的位置 x1Axis.setStandardTickUnits(DateAxis.createStandardDateTickUnits());//设置标准的时间刻度单位 x1Axis.setTickUnit(new DateTickUnit(DateTickUnit.DAY,7));//设置时间刻度的间隔,一般以周为单位 x1Axis.setDateFormatOverride(new SimpleDateFormat("yyyy-MM-dd"));//设置显示时间的格式

jfreechart柱状图上显示数据

加上这两句: renderer.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator()); renderer.setSeriesItemLabelsVisible(0, true);

jfreechart在JSP中怎么配置

请问你有没有使用IDE(集成开发功具)比如说:Eclipse或是Netbeans再或是JBuilder 如果你都没有使用,只是安装了JDK和JRE那就按如下方法去作吧! 1:jfreechart的安装文件你都备齐了没.它的官方提供的安装文件至少应该包括以下文件jfreechart_0.9.21.zip和mon-0.9.6.zip 这是我所用的版本号.现在估计都到1.0版本了.这里要说的是mon-0.9.6.zip这个安装文件必不可少. 把这两个压缩文件打开,找到我们所需要的三个重要jar文件.它们分别是mon-0.9.6.jar jfreechart-0.9.21.jar 和 gnujaxp.jar 不要多,也不要少. 2:把这三个文件.放在%JAVA_HOME%/lib中去,(这一步你也做了.)请检查你的JAVA_HOME这个环境变量设的对不对.它应该是JDK的安装根目录.拿我的为例,我的JDK安装目录为C:progJavajdk1.5.0_12.注意不是JRE的安装目录. 3:把此时三个文件所在的路径都放到CLASSPATH中去.以JDK安装目录为C:progJavajdk1.5.0_12为例.则需要在CLASSPATH这个环境变量后面附加上以下内容;C:progJavajdk1.5.0_12libjfreechart-0.9.21.jar;C:progJavajdk1.5.0_12libmon-0.9.6.jar;C:progJavajdk1.5.0_12libgnujaxp.jar; 检查你的有没有弄错. 4:最关键一步,如果你前三步都没有搞错,那好恭喜你了.你可能只是操作错误. 现在用一个程序来检验一下.我们刚才的安装. (请务一定必确认你的JDK和JRE安装正常),办法就是进入命令行.在任何一个目录下 键入java -version并回车.如果返回的java版本信息正常.说明没有问题.

如何利用jfreechart生成柱状,饼状,折线形图形。

随便几句话是说不清的。

推荐你看风中叶的struts2视频(到电驴上面搜下),大概到第二十几讲是关于jfreechart的。

不过我做他的实验时有乱码,下面附上jfreechart的流程和乱码解决方案。

创建一个数据源(dataset)来包含将要在图形中显示的数据 >>创建一个 JFreeChart 对象来代表要显示的图形 >>把图形输出 重要的类和接口: org.jfree.data.general.Dataset 所有数据源类都要实现的接口 org.jfree.chart.ChartFactory 由它来产生 JFreeChart 对象 org.jfree.chart.JFreeChart 所有对图形的调整都是通过它噢!! org.jfree.chart.plot.Plot 通过JFreeChart 对象获得它,然后再通过它对图形外部部分(例:坐标轴)调整 注意:它有很多子类,一般都下嗍造型到它的子类! org.jfree.chart.renderer.AbstractRenderer 通过JFreeChart 对象获得它,然后再通过它对图形内部部分 (例:折线的类型)调整。

同样,针对不同类型的报表图,它有 着不同的子类实现! jfreechart中文乱码问题解决方案(转) 柱状图(CategoryPlot): CategoryPlot plot=chart.getCategoryPlot();//获取图表区域对象 CategoryAxis domainAxis=plot.getDomainAxis(); //水平底部列表 domainAxis.setLabelFont(new Font("黑体",Font.BOLD,14)); //水平底部标题 domainAxis.setTickLabelFont(new Font("宋体",Font.BOLD,12)); //垂直标题 ValueAxis rangeAxis=plot.getRangeAxis();//获取柱状 rangeAxis.setLabelFont(new Font("黑体",Font.BOLD,15)); chart.getLegend().setItemFont(new Font("黑体", Font.BOLD, 15)); 饼图(PiePlot): JFreeChart chart = ChartFactory.createPieChart3D("IT行业职业分布图", dataset, true, false, false); chart.getTitle().setFont(new Font("黑体",Font.BOLD,20));//设置标题字体 PiePlot piePlot= (PiePlot) chart.getPlot();//获取图表区域对象 piePlot.setLabelFont(new Font("黑体",Font.BOLD,10)); chart.getLegend().setItemFont(new Font("黑体",Font.BOLD,10)); 时序图(TimeSeries) XYPlot plot = (XYPlot) chart.getPlot(); //纵轴字体 plot.getRangeAxis().setLabelFont(new Font("宋体", Font.BOLD, 15)); //横轴框里的标题字体 chart.getLegend().setItemFont(new Font("宋体", Font.ITALIC, 15)); //横轴列表字体 plot.getDomainAxis().setTickLabelFont(new Font("新宋体", 1, 15)); //横轴小标题字体 plot.getDomainAxis().setLabelFont(new Font("新宋体", 1, 12)); 折线图 chart.getTitle().setFont(new Font("宋体", Font.BOLD, 15)); chart.getLegend().setItemFont(new Font("黑体", Font.BOLD, 15)); CategoryAxis domainAxis = plot.getDomainAxis(); /*------设置X轴坐标上的文字-----------*/ domainAxis.setTickLabelFont(new Font("黑体", Font.PLAIN, 11)); /*------设置X轴的标题文字------------*/ domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12)); NumberAxis numberaxis = (NumberAxis) plot.getRangeAxis(); /*------设置Y轴坐标上的文字-----------*/ numberaxis.setTickLabelFont(new Font("黑体", Font.PLAIN, 12)); /*------设置Y轴的标题文字------------*/ numberaxis.setLabelFont(new Font("黑体", Font.PLAIN, 12))

日本vps云服务器选择指南。

日本vps云服务器怎么选择?很多人都会遇到日本vps和日本云服务器怎么选择的问题,日本云服务器具有免备案的特点。小编今天就分析一下日本云服务器价格多少钱,以方便大家选购的时候有个更加合适的取舍。日本云服务器租用前比较选择,高性能、安全、高效、免备案日本云服务器是很关键的因素。那么,日本云服务器该怎么选择呢?日本作为我们的邻国,与其贸易、文化往来是比较多的。日本云服务器价格多少钱一年?一、日本·CN...

ftlcloud9元/月,美国云服务器,1G内存/1核/20g硬盘/10M带宽不限/10G防御

ftlcloud(超云)目前正在搞暑假促销,美国圣何塞数据中心的云服务器低至9元/月,系统盘与数据盘分离,支持Windows和Linux,免费防御CC攻击,自带10Gbps的DDoS防御。FTL-超云服务器的主要特色:稳定、安全、弹性、高性能的云端计算服务,快速部署,并且可根据业务需要扩展计算能力,按需付费,节约成本,提高资源的有效利用率。活动地址:https://www.ftlcloud.com...

Virtono:€23.7/年,KVM-2GB/25GB/2TB/洛杉矶&达拉斯&纽约&罗马尼亚等

Virtono最近推出了夏季促销活动,为月付、季付、半年付等提供9折优惠码,年付已直接5折,而且下单后在LET回复订单号还能获得双倍内存,不限制付款周期。这是一家成立于2014年的国外VPS主机商,提供VPS和服务器租用等产品,商家支持PayPal、信用卡、支付宝等国内外付款方式,可选数据中心包括罗马尼亚、美国洛杉矶、达拉斯、迈阿密、英国和德国等。下面列出几款VPS主机配置信息,请留意,下列配置中...

jfreechart为你推荐
动态图片格式怎么将GIF动态图片的格式变成JPG 动态效果不变?动态图片格式动态图片是什么格式?pps官网pps软件下载中心 pps影视软件下载pat是什么格式如何把JPG图片变为PAT格式图片?java程序员招聘★JAVA软件工程师工资待遇怎样网络安全密钥网络安全密钥和wifi密码有什么区别网络安全密钥一般路由器是网络安全密钥是多少gas是什么意思gc是什么意思啊?particular教程怎样做ae粒子云效果idataparameterweighting parameter是什么意思
成都虚拟主机 过期域名查询 域名服务器是什么 google电话 mediafire 海外服务器 Hello图床 wdcp directadmin ubuntu更新源 php空间申请 申请个人网站 国外免费全能空间 东莞数据中心 息壤代理 hkt 个人免费主页 1元域名 太原联通测速 linode支付宝 更多