第一步:
//生成折线图的处理类(其他DOMAIN类代码省略)
public class CreateJFreeChartXYLine {
// 保存为文件
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,500, 400);
// 保存为JPEG
// ChartUtilities.writeChartAsJPEG(out, chart, 500, 400);
out.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e) {
// do nothing
}
}
}
}
// 根据XYDataset创建JFreeChart对象
public static JFreeChart createChart(XYDataset dataset) {
// 创建JFreeChart对象:ChartFactory.createXYLineChart
JFreeChart jfreechart = ChartFactory.createTimeSeriesChart("折线模型图",
"年份", "数量", dataset, false, true, false);
jfreechart.getTitle().setFont(new Font("宋体", Font.BOLD, 12));
// 使用CategoryPlot设置各种参数。以下设置可以省略。
XYPlot plot = (XYPlot) jfreechart.getPlot();
// 背景色 透明度
plot.setBackgroundAlpha(0.5f);
// 前景色 透明度
plot.setForegroundAlpha(0.5f);
// 其它设置可以参考XYPlot类
ValueAxis categoryaxis = plot.getDomainAxis(); // 横轴上的
categoryaxis.setPositiveArrowVisible(true);// 增加横轴的箭头
plot.getRangeAxis().setPositiveArrowVisible(true);// 增加纵轴的箭头
categoryaxis.setTickLabelFont(new Font("宋体", 10, 12));// 设定字体、类型、字号
DateAxis axis = (DateAxis) plot.getDomainAxis();
axis.setDateFormatOverride(new SimpleDateFormat("MM月"));
NumberAxis numberaxis = new NumberAxis("统计报表");//侧面显示的标题
numberaxis.setAutoRangeIncludesZero(false);
plot.setRangeAxis(1, numberaxis);
plot.setDataset(1, dataset);
plot.mapDatasetToRangeAxis(1, 1);
XYItemRenderer xyitemrenderer = plot.getRenderer();
StandardXYItemRenderer standardxyitemrenderer1 = new StandardXYItemRenderer();
standardxyitemrenderer1.setSeriesPaint(0, Color.black);
standardxyitemrenderer1.setSeriesPaint(0, Color.black);
standardxyitemrenderer1.setPlotLines(true);
LegendTitle legendtitle = new LegendTitle(xyitemrenderer);
LegendTitle legendtitle1 = new LegendTitle(standardxyitemrenderer1);
BlockContainer blockcontainer = new BlockContainer(
new BorderArrangement());
blockcontainer.add(legendtitle, RectangleEdge.LEFT);
blockcontainer.add(legendtitle1, RectangleEdge.RIGHT);//这两行代码可以控制位置
blockcontainer.add(new EmptyBlock(2000D, 0.0D));
CompositeTitle compositetitle = new CompositeTitle(blockcontainer);
compositetitle.setPosition(RectangleEdge.BOTTOM);//放置图形代表区域位置的代码
jfreechart.addSubtitle(compositetitle);
Font font2 = new Font("宋体", 10, 16); // 设定字体、类型、字号
plot.getDomainAxis().setLabelFont(font2);// 相当于横轴或理解为X轴
plot.getRangeAxis().setLabelFont(font2);// 相当于竖轴理解为Y轴
return jfreechart;
}
/**
* 创建XYDataset对象
*
*/
public static XYDataset createXYDataset() {
MyChartService ms = new MyChartService();
// XYSeriesCollection xySeriesCollection = new XYSeriesCollection();
TimeSeriesCollection timeseriescollection = new TimeSeriesCollection();
List<String> names = ms.listall();
for (String name : names) {
System.out.println(name);
TimeSeries timeseries = new TimeSeries(name);
List<MyChart> mcs = ms.FindByName(name);
for (MyChart mc : mcs) {
Calendar cc = Calendar.getInstance();
System.out.println(mc.getScore());
cc.setTime(mc.getDate());
timeseries.add(new Month(cc.get(Calendar.MONTH), cc
.get(Calendar.YEAR)), mc.getScore());
// xyseries.add(mc.getDate(),mc.getScore());
}
// xySeriesCollection.addSeries(timeseries);
timeseriescollection.addSeries(timeseries);
}
return timeseriescollection;
}
第二步:如果配合Struts1使用的话
request.setCharacterEncoding("gbk");
response.setContentType("image/jpeg;charset=gbk");
MyChartService ms=new MyChartService();
//步骤1:创建XYDataset对象(准备数据)
XYDataset dataset =CreateJFreeChartXYLine.createXYDataset();
//步骤2:根据Dataset 生成JFreeChart对象,以及做相应的设置
JFreeChart freeChart =CreateJFreeChartXYLine.createChart(dataset);
//步骤3:将JFreeChart对象输出到文件,Servlet输出流等
String url= "c:\\jfreechart\\lineXY.png";
CreateJFreeChartXYLine.saveAsFile(freeChart,url, 900, 700);
request.setAttribute("url", url);
request.setAttribute("lists", ms.listall());
return mapping.findForward("list");
直接将路径发到JSP页面,从而达到显示图片效果
分享到:
相关推荐
labview程序代码参考学习使用,希望对你有所帮助。
毕设和企业适用springboot生鲜鲜花类及数据处理平台源码+论文+视频.zip
毕设和企业适用springboot企业数据智能分析平台类及汽车管理平台源码+论文+视频
毕设和企业适用springboot社区物业类及企业创新研发平台源码+论文+视频
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Floating Text Example</title> <style> .floating-text { font-size: 24px; position: relative; animation: float 3s ease-in-out infinite; } @keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-20px); } } </style> </head> <body> <div class="floating-text">Hello, I'm floating!</div> <script> document.addEventListener('DOMContentLoaded', function() {
毕设和企业适用springboot社交媒体分析平台类及智慧医疗管理平台源码+论文+视频
毕设和企业适用springboot生鲜鲜花类及餐饮管理平台源码+论文+视频
毕设和企业适用springboot人工智能客服系统类及用户行为分析平台源码+论文+视频
毕设和企业适用springboot全渠道电商平台类及个性化广告平台源码+论文+视频
毕设和企业适用springboot社交互动平台类及线上图书馆源码+论文+视频
毕设和企业适用springboot企业知识管理平台类及供应链优化平台源码+论文+视频
毕设和企业适用springboot企业健康管理平台类及数据处理平台源码+论文+视频.zip
内容概要:本文档是一份面向初学者的详细指南,重点介绍如何利用Vue.js 2.0快速创建和运行简单的Todo List应用。首先指导安装必需的Node.js、npm/yarn等环境准备,接着通过Vue CLI工具生成新的Vue项目,再详细介绍项目目录和组件的构建方式。最后提供了具体的方法实现添加和删除待办事项,并指导如何使用命令启动应用,查看结果。 适合人群:具备基础Web开发技能的前端开发新手,尤其是对Vue框架感兴趣的学习者。 使用场景及目标:作为初学者入门级的学习资料,本文档的目标是让读者能够在最短时间内掌握Vue.js的基础概念和技术栈的应用方式,以便日后可以独立地构建更加复杂的Vue应用。 其他说明:除了学习如何构建应用程序之外,本文档还涵盖了Vue的基本语法和数据绑定、事件处理机制等重要概念,对于理解Vue框架的工作原理十分有帮助。
毕设和企业适用springboot企业健康管理平台类及智能化系统源码+论文+视频.zip
毕设和企业适用springboot企业健康管理平台类及远程医疗平台源码+论文+视频.zip
毕设和企业适用springboot数据可视化类及数据智能化平台源码+论文+视频
毕设和企业适用springboot生鲜鲜花类及用户体验优化平台源码+论文+视频.zip
毕设和企业适用springboot人工智能客服系统类及虚拟银行平台源码+论文+视频
毕设和企业适用springboot社交应用平台类及云计算资源管理平台源码+论文+视频
毕设和企业适用springboot企业数据监控平台类及线上图书馆源码+论文+视频