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))

PhotonVPS:美国Linux VPS半价促销2.5美元/月起,可选美国洛杉矶/达拉斯/芝加哥/阿什本等四机房

photonvps怎么样?photonvps现在针对旗下美国vps推出半价促销优惠活动,2.5美元/月起,免费10Gbps DDoS防御,Linux系统,机房可选美国洛杉矶、达拉斯、芝加哥、阿什本。以前觉得老牌商家PhotonVPS贵的朋友可以先入手一个月PhotonVPS美国Linux VPS试试了。PhotonVPS允许合法大人内容,支持支付宝、paypal和信用卡,30天退款保证。Photo...

Vinahost - 越南VPS主机商月6美元 季付以上赠送时长最多半年

Vinahost,这个主机商还是第一次介绍到,翻看商家的介绍信息,是一家成立于2008年的老牌越南主机商,业务涵盖网站设计、域名、SSL证书、电子邮箱、虚拟主机、越南VPS、云计算、越南服务器出租以及设备托管等,机房主要在越南胡志明市的Viettle和VNPT数据中心,其中VNPT数据中心对于国内是三网直连,速度优。类似很多海外主机商一样,希望拓展自己的业务,必须要降价优惠或者增加机房迎合需求用户...

ZJI:520元/月香港服务器-2*E5-2630L/32GB/480G SSD/30M带宽/2IP

ZJI发布了一款7月份特别促销独立服务器:香港邦联四型,提供65折优惠码,限量30台(每用户限购1台),优惠后每月520元起。ZJI是原来Wordpress圈知名主机商家:维翔主机,成立于2011年,2018年9月启用新域名ZJI,提供中国香港、台湾、日本、美国独立服务器(自营/数据中心直营)租用及VDS、虚拟主机空间、域名注册等业务。下面列出这款服务器的配置信息。香港邦联四型CPU:2*E5-2...

jfreechart为你推荐
youtube创始人李开复的创新工场是做什么的啊???flash实例flash CS3 实例的属性面板里的实例名称是指什么暴力破解rar对RAR压缩包进行解压时需要密码,使用暴力破解仍无法解码该怎么办?在线直播系统网络视频直播系统的简介腾讯合作伙伴大会腾讯位置服务是什么?cc防火墙服务器里安全狗里的WEB防火墙是什么意思短信套餐手机短信都有什么套餐acceptchangeswinform 怎样把DataTable 中的值插入到数据库中validdatevalid use date 什么意思pass是什么在英语里pass是什么意思
免费美国主机 老左 hostmaster 息壤主机 pw域名 免备案空间 国外php空间 云鼎网络 ca4249 100x100头像 架设服务器 admit的用法 徐正曦 vip域名 服务器是干什么用的 海外空间 shuang12 登陆qq空间 睿云 网站防护 更多