- 浏览: 1336079 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
kay11:
...
JAVA生成简单的随机字符串(a-zA-Z0-9) -
zhangliguoaccp:
您好关于登录页面的验验证码这块怎么解决的?还有登录成功后,跳转 ...
JAVA,模拟HTTP登录 -
107x:
不错,谢谢!
<c:foreach 循环 map -
wenjin:
不知楼主是不还在想请叫一下我自己开的Tomcat下载一个文件C ...
Android 下载文件及写入SD卡 -
zyywgf:
JSTL c标签,fn标签,fmt标签
package com.potevio.rnd.tobacco.mine; import java.util.Map; /** * @description 数据BEAN * @author Zhou-Jingxian */ public class Bean { private String goods_name ; private Map<String,Double> priceindexMap; public String getGoods_name() { return goods_name; } public void setGoods_name(String goods_name) { this.goods_name = goods_name; } public Map<String, Double> getPriceindexMap() { return priceindexMap; } public void setPriceindexMap(Map<String, Double> priceindexMap) { this.priceindexMap = priceindexMap; } }
package com.potevio.rnd.tobacco.mine; import java.awt.Color; import java.awt.Font; import java.awt.GradientPaint; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; import org.jfree.chart.labels.ItemLabelAnchor; import org.jfree.chart.labels.ItemLabelPosition; import org.jfree.chart.labels.StandardXYItemLabelGenerator; import org.jfree.chart.plot.XYPlot; import org.jfree.chart.renderer.xy.XYItemRenderer; import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; import org.jfree.chart.title.TextTitle; import org.jfree.data.time.Month; import org.jfree.data.time.TimeSeries; import org.jfree.data.time.TimeSeriesCollection; import org.jfree.ui.RectangleInsets; import org.jfree.ui.TextAnchor; /** * @description 使用JFreeChart组建,生成一个价格随日期的走势图表 * @author Zhou-Jingxian */ public class TimeSeriesChartUtil { private String type;//month,year private int width ;//后台计算 private int height;//后台计算 private String title;//图表的主标题 private String subTitle;//图表的子标题 private String xName;//可默认值:月份 private String yName;//可默认值:价格指数 /*** * constructor function * @param type * @param title * @param subTitle * @param xName * @param yName */ public TimeSeriesChartUtil(String type,String title,String subTitle,String xName,String yName){ this.type = type; this.title = title; this.subTitle = subTitle; this.xName = xName; this.yName = yName; if("month".equals(type)){ this.width = 800; this.height = 600; }else if("year".equals(type)){ this.width = 600; this.height = 400; } } /** 根据TimeSeriesCollection创建JFreeChart对象*/ public JFreeChart createChart(TimeSeriesCollection dataset) { JFreeChart chart = ChartFactory.createTimeSeriesChart(this.title, this.xName,this.yName, dataset, true, true, true); XYPlot plot = (XYPlot) chart.getPlot(); XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer)plot.getRenderer(); //设置网格背景颜色 plot.setBackgroundPaint(Color.white); //设置网格竖线颜色 plot.setDomainGridlinePaint(Color.pink); //设置网格横线颜色 plot.setRangeGridlinePaint(Color.pink); //设置曲线图与xy轴的距离 plot.setAxisOffset(new RectangleInsets(0D, 0D, 0D, 10D)); //设置曲线是否显示数据点 xylineandshaperenderer.setBaseShapesVisible(true); //设置曲线显示各数据点的值 XYItemRenderer xyitem = plot.getRenderer(); xyitem.setBaseItemLabelsVisible(true); xyitem.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT)); xyitem.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator()); xyitem.setBaseItemLabelFont(new Font("Dialog", 1, 14)); plot.setRenderer(xyitem); //设置子标题 TextTitle subtitle = new TextTitle(this.subTitle, new Font("黑体", Font.BOLD, 12)); chart.addSubtitle(subtitle); //设置主标题 chart.setTitle(new TextTitle(this.title, new Font("隶书", Font.ITALIC, 15))); //设置背景颜色 chart.setBackgroundPaint(new GradientPaint(0, 0, Color.white, 0, 1000,Color.blue)); chart.setAntiAlias(true); return chart; } /**创建TimeSeriesCollection对象 */ public TimeSeriesCollection createDataset(List<Bean> datalist){ //时间曲线数据集合 TimeSeriesCollection lineDataset = new TimeSeriesCollection(); for(int i=0;i<datalist.size();i++){ Bean bean = datalist.get(i); TimeSeries series = new TimeSeries(bean.getGoods_name(),Month.class); Map<String,Double> pimap = bean.getPriceindexMap(); Set piset = pimap.entrySet(); Iterator piIterator = piset.iterator(); while(piIterator.hasNext()){ Map.Entry<String,Double> hiddenMapEntry = (Map.Entry<String,Double>)piIterator.next(); String key = hiddenMapEntry.getKey(); int year = Integer.parseInt(key.substring(0,4)); int month = Integer.parseInt(key.substring(4, 6)); series.add(new Month(month,year),hiddenMapEntry.getValue()); } lineDataset.addSeries(series); } return lineDataset; } /**保存为文件*/ public void saveAsFile(JFreeChart chart, String outputPath) { 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, width, height); // 保存为JPEG // ChartUtilities.writeChartAsJPEG(out, chart, width, 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 } } } } public int getWidth() { return width; } public void setWidth(int width) { this.width = width; } public int getHeight() { return height; } public void setHeight(int height) { this.height = height; } public String getXName() { return xName; } public void setXName(String name) { xName = name; } public String getYName() { return yName; } public void setYName(String name) { yName = name; } public String getType() { return type; } public void setType(String type) { this.type = type; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getSubTitle() { return subTitle; } public void setSubTitle(String subTitle) { this.subTitle = subTitle; } }
package com.potevio.rnd.tobacco.mine; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.jfree.chart.JFreeChart; import org.jfree.data.time.TimeSeriesCollection; /** * @description 构造数据,测试图片生成 * @author Zhou-Jingxian */ public class Main { public static void main(String[] args) { TimeSeriesChartUtil util = new TimeSeriesChartUtil("year", "重点品牌价格走势图", "2009年8-10月走势图", "时间", "价格指数"); List<Bean> datalist = new ArrayList<Bean>(); Bean bean1 = new Bean(); bean1.setGoods_name("中华"); Map<String,Double> priceindexMap1 = new HashMap<String,Double>(); priceindexMap1.put("200903", 99.86); priceindexMap1.put("200904", 99.8); priceindexMap1.put("200905", 99.97); priceindexMap1.put("200906", 99.96); priceindexMap1.put("200907", 99.86); priceindexMap1.put("200908", 99.8); priceindexMap1.put("200909", 99.97); priceindexMap1.put("200910", 99.96); bean1.setPriceindexMap(priceindexMap1); datalist.add(bean1); Bean bean2 = new Bean(); bean2.setGoods_name("芙蓉王"); Map<String,Double> priceindexMap2 = new HashMap<String,Double>(); priceindexMap2.put("200903", 100.12); priceindexMap2.put("200904", 100.2); priceindexMap2.put("200905", 100.0); priceindexMap2.put("200906", 100.08); priceindexMap2.put("200907", 100.12); priceindexMap2.put("200908", 100.2); priceindexMap2.put("200909", 100.0); priceindexMap2.put("200910", 100.08); bean2.setPriceindexMap(priceindexMap2); datalist.add(bean2); Bean bean3 = new Bean(); bean3.setGoods_name("云烟"); Map<String,Double> priceindexMap3 = new HashMap<String,Double>(); priceindexMap3.put("200903", 99.77); priceindexMap3.put("200904", 99.7); priceindexMap3.put("200905", 99.83); priceindexMap3.put("200906", 99.93); priceindexMap3.put("200907", 99.77); priceindexMap3.put("200908", 99.7); priceindexMap3.put("200909", 99.83); priceindexMap3.put("200910", 99.93); bean3.setPriceindexMap(priceindexMap3); datalist.add(bean3); //步骤1:创建XYDataset对象(准备数据) TimeSeriesCollection dataset = util.createDataset(datalist); //步骤2:根据Dataset 生成JFreeChart对象,以及做相应的设置 JFreeChart freeChart = util.createChart(dataset); //步骤3:将JFreeChart对象输出到文件,Servlet输出流等 util.saveAsFile(freeChart, "F:\\jfreechart\\lineXY_"+Math.random()*20+".png"); } }
生成的效果图:
发表评论
-
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 5588SSH中调用带返回结果集的存储过程: 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 3970org.hibernate.InstantiationExce ... -
org.hibernate.hql.ast.QuerySyntaxException: ? is not mapped
2010-05-03 21:52 41482010-5-3 21:48:23 org.apache.ca ... -
java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit
2010-05-03 21:32 4203MyEclipse 开发 SSH 整合时 java.la ...
相关推荐
这里以折线图为例,使用`JFreeChart.createLineChart()`方法。 ```java JFreeChart chart = ChartFactory.createLineChart( "折线图示例", // 图表标题 "类别", // X轴标签 "值", // Y轴标签 dataset // 数据集...
该示例展示了如何自定义X轴和Y轴的刻度,以及如何设定时间间隔为每小时,并以整点作为折点绘制折线图。 #### 三、代码解析 1. **导入必要的类:** ```java import java.awt.Color; import java.awt.Font; ...
可以使用`TimeSeriesCollection`来组织时间序列数据,然后通过`ChartFactory.createLineChart()`创建折线图: ```java TimeSeriesCollection dataset = ... // 创建数据集 JFreeChart chart = ChartFactory....
3. 使用`JFreeChart`的`createXYLineChart()`方法创建折线图,传入数据集、图表标题、x轴标签、y轴标签等参数。 4. 同样,可以创建`ChartFrame`来显示或保存为图像。 通过运行这两个`.java`文件,用户可以立即看到...
同样,你需要先创建一个`TimeSeriesCollection`对象,然后将数据添加到其中,最后使用`LineChart`类的构造函数生成折线图。例如: ```java TimeSeries series = new TimeSeries("Series"); series.add(new ...
例如,对于折线图,可以使用`createLineChart()`方法,传入图表的标题、X轴标签、Y轴标签以及数据源(`CategoryDataset`)。 2. **设置数据源**: 数据源是图表的关键,它包含图表上每个系列的数据。你可以创建一个`...
"X轴标签", // X轴标签 "Y轴标签", // Y轴标签 dataset // 数据集 ); ChartFrame frame = new ChartFrame("我的折线图", chart); frame.pack(); frame.setVisible(true); ``` 以上代码示例展示了...
JFreeChart是一款强大的Java图形库,它为开发者提供了绘制各种复杂图表的能力,包括折线图、饼形图、柱状图、域状图以及组合图表等。这个特定的例子是将JFreeChart应用于Web工程中,解决了在Web环境下可能出现的乱码...
为了创建这种图表,首先需要创建一个 `TimeSeriesCollection` 对象来存储时间序列数据,然后使用 `ChartFactory.createTimeSeriesChart()` 方法生成图表实例。此外,还可以对轴进行格式化,以更好地展示时间数据。 ...
- 折线图(XYLineChart):适用于x、y坐标轴的数据。 - 直方图(Histogram):用于展示数据分布。 - 时间序列图(TimeSeriesChart):专门用于处理时间序列数据。 3. **创建图表**:创建图表的基本步骤通常包括...
`CategoryPlot`是柱状图的主要组件,它管理着X轴和Y轴的数据映射。通过`BarRenderer`,你可以定制条形的颜色、宽度等样式。 3. **折线图(Line Chart)** 折线图用于表示数据随时间变化的趋势。使用`...
`CategoryDataset`用于柱状图、折线图等,而`TimeSeriesCollection`适用于时间序列数据。 4. **Plot**: `Plot` 类负责管理图表的数据和渲染方式。不同的图表类型对应不同的子类,如`CategoryPlot`和`XYPlot`。你...
在JavaFX中,JFreeChart是一个非常有用的库,它允许开发者创建各种复杂的图表,如折线图、柱状图、饼图、散点图等。本文将深入探讨如何结合JavaFX与JFreeChart来实现图表的生成。 首先,我们需要了解JFreeChart库的...
在柱状图和折线图中,数据集通常是`CategoryDataset`或`TimeSeriesCollection`,它们可以容纳多个系列的数据,每个系列包含一组相关数据点。 接下来,Ibatis作为数据访问层,用于从数据库检索数据。它通过SQL映射...
JFreeChart 是一个流行的 Java 图表库,它为开发者提供了丰富的图表绘制功能,包括折线图、柱状图、饼图、散点图、甘特图等多种类型的图表。这个开源项目广泛应用于数据可视化,尤其是在Java应用程序中,能够帮助...
- 使用`ChartFactory`创建图表,例如`JFreeChart chart = ChartFactory.createLineChart()`,指定图表标题、数据集、X轴和Y轴标签。 - 创建`ChartPanel`,`ChartPanel chartPanel = new ChartPanel(chart)`。 - ...
- **折线图**(Line Chart):用于显示趋势或随时间变化的数据。 - **柱状图**(Bar Chart):适合比较类别之间的数值差异。 - **饼图**(Pie Chart):展示各部分占整体的比例。 - **散点图**(Scatter Plot)...
`createChart`方法创建了一个时间序列图表,设置了标题、X轴和Y轴标签,以及数据源(`TimeSeriesCollection`)。 #### 设置图表属性 - **时间序列数据准备**:`timeSeries`对象被创建为`TimeSeries`类型,用于存储...
数据集可以是`CategoryDataset`(适用于分类数据,如柱状图、饼图)或`TimeSeriesCollection`(适用于时间序列数据,如折线图)。你可以自定义数据结构来满足特定需求。 3. **Plot**:负责管理图表的布局和绘制,每...
这些方法接受图表的标题、数据源、x轴标签和y轴标签作为参数。 **四、数据源与图表组件** JFreeChart 使用 `CategoryDataset` 和 `XYDataset` 接口表示分类数据和XY坐标数据。开发者可以实现这些接口或者使用提供...