- 浏览: 148263 次
- 性别:
- 来自: 上海
文章分类
//1.jquery调用ajax请求 $(document).ready(function() { $.ajax({ type: "POST", url: "需要调用的url链接", beforeSend :function() {//调用成功前前端显示内容 $("#testImgError").text("正在获取...");//可使用动态gif图片展示等待过程 }, success: function(data) {//调用成功后前端处理 $("#testImgError").text(""); $("#testImg").attr("src", "../test/"+data); }, error: function() {//前端调用错误处理 $("#testImgError").text("调用失败"); $("#testImg").hide(); } }); });
//2.前端form中的显示,只需两行代码,可嵌入到相应的table或者div中: <label id="testImgError"></label> <img id="testImg" width=500 height=270 border=0>
//3.中后端的代码也不复杂,需要处理一下数据获取和图片的保存和发送过程,代码如下: //3.1.数据获取 public void createTestImg() throws IOException { //获取参数, id不能为空 Integer id = Integer.parseInt(this.getRequest().getParameter("id")); //根据id获取数据 List distributed = testService.getData(id); ChartConstruction mtd = new ChartConstruction(""); JFreeChart demo = mtd.getTestChart(distributed); //保存为图片,创建所需保存图片的文件夹 String prefix = "InvestTypeDistributed-"; String path1 = "D://Chart//paperIrrByYear"; File newPath = new File(path1); if (!newPath.exists()) newPath.mkdir(); File tempFile1 = File.createTempFile(prefix, ".jpeg", newPath); ChartUtilities.saveChartAsJPEG(tempFile1, demo, 500, 270);//实际JFreeChart保存图片方法 //向前台传递Json sendJSON(distributed); } //3.2.向前台发送Json,方法多种多样,大家可以根据需要自行编写 private void sendJSON(List distributed){ Map<String, Object> map = new HashMap<String, Object>(); if ((distributed == null) || (distributed.size() == 0)) map.put("rows", new ArrayList<Object>()); else map.put("rows", distributed); senderJson(this.getResponse(), map); } //3.3组织数据,两个dataset,形成柱状图和折线图的组合 public JFreeChart getTestChart(List distributed, Integer companyId, String begin, String end){ //List distributed = peCompanyInvestAnalysisService.getCompanyMoneyTypeDistributed(companyId, begin, end); DefaultCategoryDataset datasetSum = new DefaultCategoryDataset(); DefaultCategoryDataset datasetNum = new DefaultCategoryDataset(); Double maxSum = 0.0d; Double minSum = 0.0d; Double tempSum = 0.0d; Integer maxNum = 0; Integer minNum = 0; Integer tempNum = 0; if(distributed!=null) for(int i=0;i<distributed.size();i++){ Map mm=(Map)distributed.get(i); if(mm.get("amount")==null) tempSum = 0.0d; else tempSum = Double.parseDouble(mm.get("amount").toString()); if(mm.get("num")==null) tempNum = 0; else tempNum = Integer.parseInt(mm.get("num").toString()); if(tempNum==null) tempNum = 0; datasetSum.addValue(tempSum, "投资币种", mm.get("moneyType").toString()); datasetNum.addValue(tempNum,"投资项目数",mm.get("moneyType").toString()); } JFreeChart chart = creatChart("投资币种分布图",datasetSum,datasetNum); return chart; } //3.4调用JFreeChart的api,创建图片样式 private JFreeChart creatChart(String title, DefaultCategoryDataset datasetSum, DefaultCategoryDataset datasetNum){ //创建主题样式 StandardChartTheme standardChartTheme=new StandardChartTheme("CN"); standardChartTheme.setExtraLargeFont(new Font("黑体",Font.BOLD,15)); //设置标题字体 standardChartTheme.setRegularFont(new Font("宋书",Font.PLAIN,12));//设置图例的字体 standardChartTheme.setLargeFont(new Font("宋书",Font.PLAIN,12));//设置轴向的字体 ChartFactory.setChartTheme(standardChartTheme);//应用主题样式 JFreeChart chart = ChartFactory.createBarChart( title, // chart title "", // x轴标题,domain axis label "", // y轴标题,range axis label datasetSum, // data PlotOrientation.VERTICAL, // orientation false, // include legend true, // tooltips? false // URLs? ); chart.setBackgroundPaint(Color.white); CategoryPlot plot = (CategoryPlot) chart.getPlot(); CategoryDataset categorydataset = datasetNum; //设置第二个数据集 plot.setDataset(1, categorydataset); plot.mapDatasetToRangeAxis(1, 1); plot.setBackgroundPaint(Color.white); plot.setRangeGridlinePaint(Color.white); plot.setOutlinePaint(Color.white); //设置图片边框颜色,去掉边框 //柱体的样式设计 BarRenderer renderer = (BarRenderer) plot.getRenderer(); renderer.setSeriesPaint(0, Color.orange); renderer.setDrawBarOutline(false); //设置柱顶数据,API中居然没有StandardCategoryItemLabelGenerator这个类 renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator()); renderer.setSeriesItemLabelsVisible(0, true); //防止由于柱体太少而动态增加柱体宽度(JFreeChart默认是根据柱体多少而显示柱体宽度的) int k = datasetSum.getColumnCount(); if (k == 1) { plot.getDomainAxis().setLowerMargin(0.26); plot.getDomainAxis().setUpperMargin(0.66); } else if (k < 6) { double margin = (1.0 - k * 0.08) / 3; plot.getDomainAxis().setLowerMargin(margin); plot.getDomainAxis().setUpperMargin(margin); ((BarRenderer) plot.getRenderer()).setItemMargin(margin); } else { ((BarRenderer) plot.getRenderer()).setItemMargin(0.1); } /*------设置Y轴----*/ double unit=1d;//刻度的长度 //右边Y轴,相关属性设置 NumberAxis numberaxis1 = new NumberAxis(""); unit=Math.floor(10);//刻度的长度 NumberTickUnit ntu= new NumberTickUnit(unit); numberaxis1.setTickUnit(ntu); numberaxis1.setRange(0,100);//刻度范围 plot.setRangeAxis(1, numberaxis1); //左边Y轴 NumberAxis numberaxis = (NumberAxis) plot.getRangeAxis(); numberaxis .setAutoTickUnitSelection(false); numberaxis.setRange(0.0, 100.0);//刻度的范围 ntu= new NumberTickUnit(unit); numberaxis .setTickUnit(ntu); /*------设置柱状体与图片边框的上下间距---*/ numberaxis.setUpperMargin(0.05); numberaxis.setLowerMargin(0.05); /*------设置X轴----*/ CategoryAxis domainAxis = plot.getDomainAxis(); domainAxis.setCategoryLabelPositions(CategoryLabelPositions.STANDARD); /*------设置X轴标题的倾斜程度----*/ domainAxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(Math.PI / 6.0)); /*------设置柱状体与图片边框的左右间距--*/ //domainAxis.setLowerMargin(0.01); //domainAxis.setUpperMargin(0.01); //设置折线图的样式 LineAndShapeRenderer lineandshaperenderer = new LineAndShapeRenderer(); lineandshaperenderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator()); lineandshaperenderer.setBaseItemLabelsVisible(true); lineandshaperenderer.setBaseItemLabelFont(new Font("隶书", Font.BOLD, 10)); plot.setRenderer(1, lineandshaperenderer); plot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD); //图例1声明及相关样式设置 LegendTitle legendtitle = new LegendTitle(plot.getRenderer(0)); //图例2声明及相关样式设置 LegendTitle legendtitle1 = new LegendTitle(plot.getRenderer(1)); BlockContainer blockcontainer = new BlockContainer(new BorderArrangement()); blockcontainer.add(legendtitle, RectangleEdge.LEFT); blockcontainer.add(legendtitle1, RectangleEdge.RIGHT); blockcontainer.add(new EmptyBlock(20D, 0.0D)); CompositeTitle compositetitle = new CompositeTitle(blockcontainer); compositetitle.setPosition(RectangleEdge.BOTTOM); chart.addSubtitle(compositetitle); chart.setAntiAlias(false); chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF); return chart; }
好的例子:http://blog.sina.com.cn/s/blog_906e353d0101241e.html
小知识点:
BasicStroke basicStroke = new BasicStroke(5.0f,// 线条粗细 BasicStroke.CAP_ROUND,// 端点风格 BasicStroke.JOIN_ROUND,// 折点风格 1.0f,// 折点处理办法 new float[]{ 1.0f },// 虚线数组 0.0f);// 虚线偏移量 renderer.setSeriesStroke(1, basicStroke);// 利用虚线绘制
发表评论
-
Json-JsonUtil
2014-06-25 17:45 950http://www.open-open.com/lib ... -
Google Gson 使用简介
2014-06-25 17:17 758http://www.cnblogs.com/haippy/ ... -
JSP-获取spring 的容器ApplicationContext
2014-06-24 15:36 429http://hw1287789687.iteye.com/ ... -
Java-读取Properties文件的六种方法
2014-06-24 10:04 704http://hi.baidu.com/hgd0324/it ... -
Quartz定时任务学习(九)Quartz监听器
2014-06-22 12:43 1849转载:http://hi.baidu.com/xulin_ ... -
Quartz定时任务学习(六)作业
2014-06-22 12:44 1323转载:http://hi.baidu.com/ ... -
Quartz定时任务学习(五)触发器
2014-06-20 17:06 1530转载:http://hi.baidu.com/xulin_ ... -
Quartz定时任务学习(四)调度器
2014-06-20 17:03 1752转载:http://hi.baidu.com/xulin_1 ... -
Quartz定时任务学习(三)属性文件和jar
2014-06-20 17:00 1691转载:http://hi.baidu.com/xulin_1 ... -
Quartz定时任务学习(二)web应用
2014-06-20 16:57 880转载: http://hi.baidu.com/xuli ... -
Quartz定时任务学习(一)简单任务
2014-06-20 16:50 837转载:http://hi.baidu.com/ ... -
com.google.common.cache.CacheLoader 本地緩存的使用方法
2014-06-19 13:58 3875http://blog.sina.com.cn/s/blog ... -
javascript-json字符串数组转json数组对象
2014-06-18 16:43 1013后台的数据为 [{"use ... -
LDAP-Java LDAP操作
2014-06-18 14:03 760Java LDAP操作http://blog.csdn.n ... -
html-8款流行前沿的HTML5文本编辑器
2014-06-13 15:19 1090http://www.evget.com/article/2 ... -
Redis-Jedis
2014-06-12 16:49 483http://snowolf.iteye.com/blog/1 ... -
Jetty-嵌入式开发
2014-06-06 12:38 522http://blog.csdn.net/cdl2008sky ... -
SSO-使用 CAS 在 Tomcat 中实现单点登录
2014-06-05 16:31 580http://www.ibm.com/developerwor ... -
SSO-https原理及tomcat配置https方法
2014-06-04 18:22 1382http://jingyan.baidu.com/articl ... -
Java-加密技术
2014-06-04 18:13 408http://snowolf.iteye.com/blog/3 ...
相关推荐
jfreechart 堆栈柱状图跟折线图结合拼接 jar包请戳http://download.csdn.net/detail/a156435646/7424707
java里用JFreeChart画柱状图、折线图、雷达图,三个封装好的方法,可以直接调用。
public JFreeChart createChart(String Ytitle, String title, CategoryDataset lineData, CategoryDataset barData) { //参考附件 return chart; } //struts 部分 <!--begin 维优特例 --> ...
JFreeChart 饼状图 柱状图 柱状图 堆积柱状图 折线图 这个是我特地开发的一个用JFreeChart开发的用来画图的项目,已经开发成形了各种项目的各种需求的项目,并且自己可以拓展,根据需求修改代码,完成项目的需要。 ...
java制作jfreechart柱状图 饼状图 折线图 随机数字做的数据源 下载导入即可运行 内含jar包
源文件 博文链接:https://lansky07.iteye.com/blog/227571
jfreechart 生成折线图,饼图,柱状图,堆栈柱状图
此资源有完整柱状图,折线图,等例子,下载后可以部署运行,也可参考源码
java绘制图表(柱状图、饼图、折线图)包, jfreechart
Struts2+JFreeChart+Myeclipse实现饼状图,柱状图,折线图。
jfreechart 图形折线,饼图,柱状图等各种图形
jfreechart_生成折线图,饼图,柱状图,堆栈柱状图
Java语言纯后台生成折线图,饼图,柱状图。
jfreechart 与struts2的柱状图以及折线图例子,很给力呀,可以用大家请下载。
java实现的 生成饼状图 生成单组柱状图 生成多组柱状图 生成堆积柱状图 生成折线图 里面包括了所需要的 jcommon-1.0.12.jar jfreechart-1.0.8a.jar
使用JFreeChart绘制饼图,折线图,柱状图的代码试例
jfreechart使用SqlServer2000做的饼状图,柱状图,折线图。 最近在学习jfreechart,根据网上的资料做了这3个小例子,学习用的,代码有点乱!
NULL 博文链接:https://jeasonjack.iteye.com/blog/1187903