JFreeChart 生成 折线图(Struts2 + Maven3 + JFreeChart)
来源:互联网 发布:淘宝阿里健康大药房 编辑:程序博客网 时间:2024/05/04 17:27
转自:http://www.blogjava.net/fancydeepin/archive/2012/08/07/java_jfreechart_timeserieschart.html
package com.fancy.action;
import java.awt.Color;
import java.text.SimpleDateFormat;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.data.time.Month;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
/**
* -----------------------------------------
* @描述 折线图
* @作者 fancy
* @邮箱 fancydeepin@yeah.net
* @日期 2012-8-7 <p>
* -----------------------------------------
*/
public class CurveAction extends BaseAction{
private static final long serialVersionUID = 1L;
private String fileName;
public String execute() throws Exception{
TimeSeries series2010 = new TimeSeries("2010年度", Month.class);
TimeSeries series2011 = new TimeSeries("2011年度", Month.class);
TimeSeriesCollection dataset = new TimeSeriesCollection();
series2010.add(new Month(1, 2011), 36);
series2010.add(new Month(2, 2011), 84);
series2010.add(new Month(3, 2011), 202);
series2010.add(new Month(4, 2011), 183);
series2010.add(new Month(5, 2011), 172);
series2010.add(new Month(6, 2011), 107);
series2010.add(new Month(7, 2011), 200);
series2010.add(new Month(8, 2011), 87);
series2010.add(new Month(9, 2011), 250);
series2010.add(new Month(10, 2011), 152);
series2010.add(new Month(11, 2011), 235);
series2010.add(new Month(12, 2011), 266);
series2011.add(new Month(1, 2011), 156);
series2011.add(new Month(2, 2011), 216);
series2011.add(new Month(3, 2011), 118);
series2011.add(new Month(4, 2011), 250);
series2011.add(new Month(5, 2011), 257);
series2011.add(new Month(6, 2011), 253);
series2011.add(new Month(7, 2011), 355);
series2011.add(new Month(8, 2011), 300);
series2011.add(new Month(9, 2011), 103);
series2011.add(new Month(10, 2011), 250);
series2011.add(new Month(11, 2011), 348);
series2011.add(new Month(12, 2011), 325);
dataset.addSeries(series2010);
dataset.addSeries(series2011);
JFreeChart chart = ChartFactory.createTimeSeriesChart("A产品销售量", "", "", dataset, true, true, false);
DateAxis dateaxis = (DateAxis)chart.getXYPlot().getDomainAxis();
dateaxis.setDateFormatOverride(new SimpleDateFormat("MM月"));
chart.setBackgroundPaint(Color.WHITE);
fileName = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, getHttpSession());
return "curve";
}
public String getFileName() {
return fileName;
}
}
import java.awt.Color;
import java.text.SimpleDateFormat;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.data.time.Month;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
/**
* -----------------------------------------
* @描述 折线图
* @作者 fancy
* @邮箱 fancydeepin@yeah.net
* @日期 2012-8-7 <p>
* -----------------------------------------
*/
public class CurveAction extends BaseAction{
private static final long serialVersionUID = 1L;
private String fileName;
public String execute() throws Exception{
TimeSeries series2010 = new TimeSeries("2010年度", Month.class);
TimeSeries series2011 = new TimeSeries("2011年度", Month.class);
TimeSeriesCollection dataset = new TimeSeriesCollection();
series2010.add(new Month(1, 2011), 36);
series2010.add(new Month(2, 2011), 84);
series2010.add(new Month(3, 2011), 202);
series2010.add(new Month(4, 2011), 183);
series2010.add(new Month(5, 2011), 172);
series2010.add(new Month(6, 2011), 107);
series2010.add(new Month(7, 2011), 200);
series2010.add(new Month(8, 2011), 87);
series2010.add(new Month(9, 2011), 250);
series2010.add(new Month(10, 2011), 152);
series2010.add(new Month(11, 2011), 235);
series2010.add(new Month(12, 2011), 266);
series2011.add(new Month(1, 2011), 156);
series2011.add(new Month(2, 2011), 216);
series2011.add(new Month(3, 2011), 118);
series2011.add(new Month(4, 2011), 250);
series2011.add(new Month(5, 2011), 257);
series2011.add(new Month(6, 2011), 253);
series2011.add(new Month(7, 2011), 355);
series2011.add(new Month(8, 2011), 300);
series2011.add(new Month(9, 2011), 103);
series2011.add(new Month(10, 2011), 250);
series2011.add(new Month(11, 2011), 348);
series2011.add(new Month(12, 2011), 325);
dataset.addSeries(series2010);
dataset.addSeries(series2011);
JFreeChart chart = ChartFactory.createTimeSeriesChart("A产品销售量", "", "", dataset, true, true, false);
DateAxis dateaxis = (DateAxis)chart.getXYPlot().getDomainAxis();
dateaxis.setDateFormatOverride(new SimpleDateFormat("MM月"));
chart.setBackgroundPaint(Color.WHITE);
fileName = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, getHttpSession());
return "curve";
}
public String getFileName() {
return fileName;
}
}
将 cylinder.jsp 拷贝一份名字改成 curve.jsp,其余不变,访问:http://localhost:8080/jfreechart-demo/curve.html 的结果如图示:
在上图中,可以看出年度A产品的大概走势,但并没有具体的数据值,为使折线上的数据点的数值能够被显示出来,下面在 CurveAction 类中添加代码:
package com.fancy.action;
import java.awt.Color;
import java.awt.Font;
import java.text.SimpleDateFormat;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.axis.ValueAxis;
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.servlet.ServletUtilities;
import org.jfree.data.time.Month;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.ui.TextAnchor;
/**
* -----------------------------------------
* @描述 折线图
* @作者 fancy
* @邮箱 fancydeepin@yeah.net
* @日期 2012-8-7 <p>
* -----------------------------------------
*/
public class CurveAction extends BaseAction{
private static final long serialVersionUID = 1L;
private String fileName;
public String execute() throws Exception{
TimeSeries series2010 = new TimeSeries("2010年度", Month.class);
TimeSeries series2011 = new TimeSeries("2011年度", Month.class);
TimeSeriesCollection dataset = new TimeSeriesCollection();
series2010.add(new Month(1, 2011), 36);
series2010.add(new Month(2, 2011), 84);
series2010.add(new Month(3, 2011), 202);
series2010.add(new Month(4, 2011), 183);
series2010.add(new Month(5, 2011), 172);
series2010.add(new Month(6, 2011), 107);
series2010.add(new Month(7, 2011), 200);
series2010.add(new Month(8, 2011), 87);
series2010.add(new Month(9, 2011), 250);
series2010.add(new Month(10, 2011), 152);
series2010.add(new Month(11, 2011), 235);
series2010.add(new Month(12, 2011), 266);
series2011.add(new Month(1, 2011), 156);
series2011.add(new Month(2, 2011), 216);
series2011.add(new Month(3, 2011), 118);
series2011.add(new Month(4, 2011), 250);
series2011.add(new Month(5, 2011), 257);
series2011.add(new Month(6, 2011), 253);
series2011.add(new Month(7, 2011), 355);
series2011.add(new Month(8, 2011), 300);
series2011.add(new Month(9, 2011), 103);
series2011.add(new Month(10, 2011), 250);
series2011.add(new Month(11, 2011), 348);
series2011.add(new Month(12, 2011), 325);
dataset.addSeries(series2010);
dataset.addSeries(series2011);
JFreeChart chart = ChartFactory.createTimeSeriesChart("A产品销售量", "", "", dataset, true, true, false);
DateAxis dateaxis = (DateAxis)chart.getXYPlot().getDomainAxis();
dateaxis.setDateFormatOverride(new SimpleDateFormat("MM月"));
chart.setBackgroundPaint(Color.WHITE);
XYPlot plot = (XYPlot)chart.getPlot();
XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer)plot.getRenderer();
//设置曲线是否显示数据点
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);
ValueAxis rangeAxis = plot.getRangeAxis();
//距离上边距边框距离
rangeAxis.setUpperMargin(0.3);
//距离下边框边距距离
rangeAxis.setLowerMargin(0.5);
ValueAxis domainAxis = plot.getDomainAxis();
// 左边距 边框距离
domainAxis.setLowerMargin(0.05);
// 右边距 边框距离,防止最后边的一个数据靠近了坐标轴。
domainAxis.setUpperMargin(0.1);
fileName = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, getHttpSession());
return "curve";
}
public String getFileName() {
return fileName;
}
}
OK,再次访问的结果如图示:
[ 随笔均原创,转载请注明出处:http://www.blogjava.net/fancydeepin ]
- JFreeChart 生成 折线图(Struts2 + Maven3 + JFreeChart)
- JFreeChart 生成 饼状图(Struts2 + Maven3 + JFreeChart)
- JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)
- JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)
- JFreeChart生成折线图
- JFreeChart(使用一):生成折线图
- 利用JFreeChart生成折线图
- JFreeChart生成动态折线图
- struts2整合JFreechart 饼图、折线图、柱形图
- struts2整合JFreechart 饼图、折线图、柱形图
- jfreechart生成折线图实例(修改鼠标提示内容)
- JFreeChart生成柱状图、饼状图、折线图详解
- JFreeChart生成柱状图、饼状图、折线图详解
- JFreeChart生成2D折线图
- jfreechart之折线图
- JFreeChart学习折线图
- JFreeChart---折线图
- JfreeChart折线图
- IOS开发之---网络应用
- ubuntu的账户密码算法
- Introduction to Face Detection and Face Recognition
- Android常见错误
- Linux安裝虚拟磁带机
- JFreeChart 生成 折线图(Struts2 + Maven3 + JFreeChart)
- Perl 调试方法
- stc12c5a60s2板子的使用学习——一个初学者的历程
- 系统调用open全过程
- hdu_4377 Sub Sequence (数学推导)
- sql生成(mssql对于表的delete和update做备份的触发器)代码的存储过程
- 秒杀多线程面试题系列
- JFreeChart 生成 饼状图(Struts2 + Maven3 + JFreeChart)
- ubuntu双网卡共享上网