java 生成雷达图,生成echarts雷达图并传到Server端生成图片
需求:使用百度的echarts生成雷达图,并上传到服务器端然后处理
使用各个工具:
一、echarts实例及文档,请查看官方地址链接地址
二、html2canvas
代码示例:
一、jsp页面:
ECharts radar
.radar {
width: 450px;
height: 450px;
}
二、showChart.js代码:
// 基于准备好的容器(这里的容器是id为main的div),初始化echarts实例
var myChart = echarts.init(document.getElementById('radar'), 'dark');
// 指定图表的配置项和数据
var option = {
// rgba设置透明度0.1
backgroundColor : 'rgba(128, 128, 128, 0)',
title : {
textStyle : {
fontStyle : 'normal',
fontWeight : 'normal',
fontSize : '14'
}
},
polar : [ {
indicator : [ {
text : '速度',
max : 100
}, {
text : '力量',
max : 100
}, {
text : '防守',
max : 100
}, {
text : '技术',
max : 100
}, {
text : '耐力',
max : 100
} ],
radius : 100
} ],
series : [ {
name : '球员指数',
type : 'radar',
itemStyle : {
normal : {
areaStyle : {
opacity : '0.9',
color : new echarts.graphic.RadialGradient(0.5, 0.5, 1, [ {
color : 'rgba(255, 215, 0, 0.9)',
offset : 0
}, {
color : '#72ACD1',
offset : 1
} ])
},
lineStyle : {
color : 'rgba(255, 215, 0, 0.9)'
}
}
}
}
]
};
myChart.showLoading(); // 数据加载完之前先显示一段简单的loading动画
var values = []; // 满意度数组
$.ajax({
type : "post",
async : true, // 异步请求(同步请求将会锁住浏览器,用户其他操作必须等待请求完成才可以执行)
url : "http://localhost/qiuyuan/canvas/data", // 获取数据
data : {},
dataType : "json", // 返回数据形式为json
success : function(result) {
// 请求成功时执行该函数内容,result即为服务器返回的json对象
if (result) {
for (var i = 0; i < result.length; i++) {
values.push(result[i]); // 挨个取出并填入数组
}
myChart.hideLoading(); // 隐藏加载动画
myChart.setOption({ // 加载数据图表
series : [ {
data : [ {
value : values,
label : {
normal : {
show : true,
formatter : function(params) {
return params.value;
}
}
}
} ]
} ]
});
}
},
error : function(errorMsg) {
// 请求失败时执行该函数
alert("图表请求数据失败!");
myChart.hideLoading();
}
})
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
//等待0.5秒后传送到服务器
setTimeout(function() {
$(function() {
html2canvas(document.getElementById('radar'), {
// 允许跨域
// allowTaint : true,
onrendered : function(canvas) {
var dataUrl = canvas.toDataURL("image/png");
//console.log(dataUrl);
$.ajax({
url : 'http://localhost/qiuyuan/canvas/',
type : 'POST',
data : {
base64ImgData : JSON.stringify(dataUrl)
},
error : function(XMLHttpRequest) {
alert("Error: " + XMLHttpRequest.responseText);
}
});
}
});
})
}, 500);
三、server端代码:
package com.qiuyuan.web;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.alibaba.fastjson.JSON;
@Controller
@RequestMapping(value = "/canvas")
public class CanvasController {
@RequestMapping("/")
public void canvas(PrintWriter writer, String base64ImgData, HttpServletResponse response) {
// 设定编码
response.setCharacterEncoding("UTF-8");
// 表示是json类型的数据
response.setContentType("application/json");
Map map = new HashMap();
boolean flag = false;
String msg = "下载失败";
try {
// 保存
String filePath = decodeBase64(base64ImgData, new File("e:\\canvas.png"));
if (StringUtils.isNotBlank(filePath)) {
flag = true;
msg = "下载成功";
}
} catch (Exception e) {
e.printStackTrace();
flag = false;
msg = "下载失败!失败原因:" + e.getMessage();
}
map.put("success", flag);
map.put("msg", msg);
writer.write(JSON.toJSONString(map));
}
@ResponseBody
@RequestMapping("/data")
public String data( HttpServletResponse response) {
// 设定编码
response.setCharacterEncoding("UTF-8");
// 表示是json类型的数据
response.setContentType("application/json");
List list = new ArrayList();
list.add(95);
list.add(80);
list.add(48);
list.add(70);
list.add(85);
Map map = new HashMap();
boolean flag = false;
String msg = "获取数据失败";
try {
// 保存
flag = true;
msg = "获取数据成功";
} catch (Exception e) {
e.printStackTrace();
flag = false;
msg = "下载失败!失败原因:" + e.getMessage();
}
map.put("success", flag);
map.put("msg", msg);
return JSON.toJSONString(list);
}
/**
* 解析Base64位信息并输出到某个目录下面.
*
* @param base64Info
* base64串
* @param file
* 生成的文件路径
* @return 文件地址
* @throws IOException
*/
private String decodeBase64(String base64Info, File file) throws IOException {
if (StringUtils.isEmpty(base64Info)) {
return null;
}
String picPath = "";
if (file != null) {
picPath = file.getPath();
}
if (StringUtils.isNotBlank(base64Info) && StringUtils.isNotBlank(picPath)) {
// base64Info数据中:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABI4AAAEsCAYAAAClh/jbAAA
// ... 在"base64,"之后的才是图片信息
String[] arr = base64Info.split("base64,");
// 将图片输出到系统某目录.
OutputStream out = null;
try {
// 使用了Apache commons codec的包来解析Base64
byte[] buffer = Base64.decodeBase64(arr[1]);
out = new FileOutputStream(file);
out.write(buffer);
} catch (IOException e) {
System.out.println("解析Base64图片信息并保存到某目录下出错!");
e.printStackTrace();
} finally {
if (out != null) {
out.close();
}
}
}
return picPath;
}
}
java 生成雷达图,生成echarts雷达图并传到Server端生成图片相关推荐
- echarts折线图、echarts折线图自定义样式
html 页面引用js <script type="text/javascript" src="assets/js/echarts.min.js"> ...
- echarts 环形图占比_环形图_仪表盘
Echarts 常用各类图表模板配置 注意: 这里主要就是基于各类图表,更多的使用 Echarts 的各类配置项: 以下代码都可以复制到 Echarts 官网,直接预览: 图标模板目录 Echarts ...
- echarts 环形图
Echarts 常用各类图表模板配置 注意: 这里主要就是基于各类图表,更多的使用 Echarts 的各类配置项: 以下代码都可以复制到 Echarts 官网,直接预览: 图标模板目录 Echarts ...
- 【JFreeChart】自定义蜘蛛网图生成带刻度三角雷达图 自定义文字风格 背景色
工作中需要生成PDF 且包含图表.iText 或其他 可以访问网页地址转PDF.但是效果不是特别理想.故用iText代码方式实现生成PDF.奈何图表又是一个问题(还是个三角形的雷达图).Java端生成 ...
- 在vue中,Echarts雷达图中indicator的点击事件,不能改变data中的值的解决方法
在vue中,Echarts雷达图中indicator的点击事件,不能改变data中的值的解决方法 参考文章: (1)在vue中,Echarts雷达图中indicator的点击事件,不能改变data中的 ...
- Eclipse 插件用法:Eclipse 利用 Amateras UML 生成 Java 类图、时序图和 UML 类图
文章目录 前言 一.安装 Eclipse 官方提供的安装框架 GEF 1.1.Eclipse 中第三方插件更新/安装策略 1.2.为什么选择 GEF 框架? 1.3.GEF 框架安装 二.安装 Ama ...
- java生成二维码合成背景图
一.背景 接到个需求,要打印纸质红包,上面附二维码,然后每个红包的二维码不一样,扫描二维码去参加活动领真实的红包,需要给出对应的图片 二.代码示例 import java.awt.Graphics2D ...
- java使用poi操作world生成饼图,柱状图,折线图,组合图:一
java使用poi操作world生成饼图,柱状图,折线图,组合图:一 下文和问题链接 开发前准备 准备模板 模板下载地址百度云盘:cvod 本文可用操作 组合图操作 模板效果对比填充后的效果 饼图 模 ...
- java使用poi操作world生成饼图,柱状图,折线图,组合图:二
java使用poi操作world生成饼图,柱状图,折线图,组合图:二 上文和问题链接 直接上代码 maven 测试类:单图表(入口) 测试类:组合图表(入口) 工具类:组合数据类 工具类:枚举解析图表 ...
- Java通过JfreeChart生成转Base64图片字符串(饼图、折线图、柱状图、折线图-多条、3D柱状图、气泡图、时序图、曲线图、区域图、分布图、联合分类图、双X轴图、K线图、柱状图-横向等图)
工具类 CreatLineChart.java package DrawLine;import java.awt.BasicStroke; import java.awt.Color; import ...
最新文章
- Linux的命令行界面简介
- 生物医学大数据处理研究探讨
- mysql忽略大小写配置cnetos_CentOS7下安装MYSQL8.X并设置忽略大小写
- Java 位运算- 十进制数值转十六进制(内存中的数据)
- Java业务逻辑pyqt_PyQt5 UI界面与业务逻辑分离
- springboot整合kafka和netty服务简单实例
- 9名程序员被抓!这次真的活该.....
- 新建android模拟器无法拨号 真机可以拨号,自己想弄个手机拨号器,可是在模拟器上没有反应,能帮帮忙吗?...
- 周年纪念闪金海报设计,这个日子不简单!
- win11怎么回退原系统 Windows11回退的步骤方法
- C#基础5:字符串操作
- 用手机玩转ContextCapture(Smart3D)跑出惊艳三维模型
- 怎样避免每次运行都启用宏的麻烦
- WARNING: AllowZoneDrifting is enabled.
- Java工程师的成长之路
- Windows 回声消除 怎么外放音乐不让对方听到
- Revo Uninstaller Pro(软件卸载工具)官方中文版V4.4.2.0 | 万能卸载软件下载 | 软件卸载工具哪个好?
- IPad分屏,当电脑第二显示屏
- python数据采集培训
- 浴火重生,燃起奋斗的欲望
热门文章
- syswow64删除文件_什么是SysWow64文件夹 SysWow64文件夹可以删除吗
- Docker核心技术(一):镜像与容器
- MySQL的用户密码过期password_expired功能
- [dlang](4)自定义的mysql orm工具
- 工业设备数字孪生白皮书
- Linux Namespace Veth虚拟网卡
- 全国大学生物联网设计竞赛作品 | 室内消毒机器人-艾盾
- CodeForces 643 D.Bearish Fanpages(set+multiset)
- unity3d 700种 材质球_活动策划:这10种气球创意玩法,让活动现场的布置更高级。...
- Python 获取指定日期是周几 3种方法