使用Echarts画图
来源:互联网 发布:linux 搜索文件夹权限 编辑:程序博客网 时间:2024/05/23 11:09
1、首先引入包:百度云管家/资源/echarts-2.0.0\
2、后台代码:
前台请求代码:
<ul class="sf-menu">
<li class="current"><a HREF="/admin/dashboard.action">Dashboard</a></li>
<li>
<a HREF="/admin/dashboard.action">服务</a>
<ul>
<li>
<a HREF="/admin/server.action/1">云推送</a>
</li>
<li>
<a HREF="/admin/server.action/2">直播聊天室</a>
</li>
<li>
<a HREF="/admin/server.action/3">passport</a>
</li>
<li>
<a HREF="/admin/server.action/4">订阅</a>
</li>
<li>
<a HREF="/admin/server.action/5">播放记录</a>
</li>
<li>
<a HREF="/admin/server.action/6">收藏</a>
</li>
<li>
<a HREF="/admin/server.action/99">其他</a>
</li>
</ul>
</li>
<li><a HREF="/admin/search.action">搜索</a></li>
</ul>
Controller代码:
@RequestMapping(value = {"/server.action/{id}"}, method = {GET, POST })
@ResponseBody
ModelAndView serverPage(@PathVariable("id") String id, HttpServletRequest request, HttpServletResponse response) throws IOException{
HashMap<String, String> optionmap = redisService.getSummaryByServiceID(id);
ModelAndView mv = createModelAndView(request, "server");
mv.addObject("optionmap", optionmap);
mv.addObject("ids", ErrorType.ids);
mv.addObject("sername", ServerType.getSerTypeMap().get(id));
return mv;
}
Service代码:
public HashMap<String, String> getSummaryByServiceID(String id) {
HashMap<String, String> result = new HashMap<String, String>();
HashMap<String, ArrayList<ErrorTypeBean>> resmap = new HashMap<String, ArrayList<ErrorTypeBean>>();
long beforeTwoHour = DateUtils.getTwoHourBefTime();
Map<Object, Object> keymap = feedbackRedisTemplate.opsForHash().entries("keys");
Map<Object, Object> typeMap;
String[] ids = ErrorType.ids;
//初始化时间轴列表
for(int i=0; i<ids.length; i++){
ArrayList<ErrorTypeBean> list = new ArrayList<ErrorTypeBean>();
ArrayList<Long> lDate = DateUtils.findBetweenDates();
ErrorTypeBean etb = null;
for(int j=0; j<24; j++){
etb = new ErrorTypeBean();
etb.time = lDate.get(j);
list.add(etb);
}
resmap.put(ids[i], list);
}
long keyTime;
String serid;
// 遍历keymap获得hashkey集合
for (Map.Entry<Object, Object> map : keymap.entrySet()) {
String key = (String) map.getKey();
serid = key.split("_")[0];
keyTime = Long.parseLong(key.split("_")[1]);
if (keyTime > beforeTwoHour && serid.equals(id)) {
typeMap = feedbackRedisTemplate.opsForHash().entries(key);
for (Map.Entry<Object, Object> maptemp : typeMap.entrySet()) {
ArrayList<ErrorTypeBean> list = resmap.get((String) maptemp.getKey());
int index = DateUtils.getDateIndex(list.get(0).time, keyTime);
ErrorTypeBean errortype = list.get(index-1);
errortype.count = Long.parseLong((String)maptemp.getValue());
}
}
}
Option opt = null;
String title = "";
for(Map.Entry<String, ArrayList<ErrorTypeBean>> maptemp:resmap.entrySet()){
String key = maptemp.getKey();
ArrayList<ErrorTypeBean> list = resmap.get(key);
title = (list.get(0).getTime() + "").substring(0, 4) + "-" + (list.get(0).getTime() + "").substring(4, 6) + "-" + (list.get(0).getTime() + "").substring(6, 8);
/** x轴类目 */
List<Object> xzhou = new ArrayList<Object>();
for (int i = 0; i < list.size(); i++) {
xzhou.add((list.get(i).getTime() + "").substring(8, 10) + ":" + (list.get(i).getTime() + "").substring(10, 12));
}
/** 错误数 */
List<Object> errornum = new ArrayList<Object>();
for (int i = 0; i < list.size(); i++) {
errornum.add(list.get(i).getCount());
}
opt = new Option();
/** 标题 */
opt.title(ErrorType.errTypeMap.get(key) + ":(" + title + ")");
/** 提示框 */
opt.tooltip().show(true).trigger(Trigger.axis);
/** 图例说明 */
opt.legend().data("错误数");
/** 是否启用拖拽重计算特性 */
opt.calculable(true);
/** x轴 -类目轴 */
opt.xAxis(new CategoryAxis().type(AxisType.category).axisLabel(new AxisLabel().show(true).interval("auto").rotate(45).margin(4).textStyle(new TextStyle().fontFamily("sans-serif").fontSize(12).fontStyle(FontStyle.italic))).data(xzhou.toArray()));
/** Y轴 -值轴 */
opt.yAxis(new ValueAxis().type(AxisType.value).name("错误数").axisLabel(new AxisLabel().formatter("{value} ")));
/** 数据 */
opt.series(new Line().name("错误数").type(SeriesType.line).data(errornum.toArray()));
result.put(key, JSON.toJSONString(opt));
}
return result;
}
返回页面显示页代码:
<script type="text/JavaScript">
require.config({
paths:{
echarts:'./js/echarts',
'echarts/chart/bar' : '/js/echarts-2.0.0/doc/example/www/js/echarts-map',
'echarts/chart/line': '/js/echarts-2.0.0/doc/example/www/js/echarts-map',
'echarts/chart/map' : '/js/echarts-2.0.0/doc/example/www/js/echarts-map'
}
});
require(
[
'echarts',
'echarts/chart/bar',
'echarts/chart/line',
'echarts/chart/map'
],
function (ec) {
<%
HashMap<String, String> map = (HashMap<String, String>)request.getAttribute("optionmap");
String[] ids = (String[])request.getAttribute("ids");
for(int i=0; i<ids.length; i++){
if(map.containsKey(ids[i])){
String option = map.get(ids[i]);
%>
var myChart = ec.init(document.getElementById('graph<%= ids[i]%>'));
var option = <%= option %>;
myChart.setOption(option);
<%
}
}
%>
}
);
//将object转为String
function obj2string(o){
var r=[];
if(typeof o=="string"){
return "\""+o.replace(/([\'\"\\])/g,"\\$1").replace(/(\n)/g,"\\n").replace(/(\r)/g,"\\r").replace(/(\t)/g,"\\t")+"\"";
}
if(typeof o=="object"){
if(!o.sort){
for(var i in o){
r.push(i+":"+obj2string(o[i]));
}
if(!!document.all&&!/^\n?function\s*toString
\s*\{\n?\s*
r.push("toString:"+o.toString.toString());
}
r="{"+r.join()+"}";
}else{
for(var i=0;i<o.length;i++){
r.push(obj2string(o[i]))
}
r="["+r.join()+"]";
}
return r;
}
return o.toString();
}
</script>
- 使用Echarts画图
- 使用echarts画图表
- echarts画图
- 学习笔记:使用echarts画图表
- 如何用AngularJS使用ECharts画图
- 百度echarts.js画图
- 画图形表格用ECharts
- Echarts使用
- ECharts使用
- echarts使用
- Echarts使用
- ECharts使用
- ECharts使用
- Echarts使用
- ECharts使用
- Echarts使用
- eCharts画图断点连线的解决方案
- 什么是Echarts?Echarts如何使用?
- 【GTK+3.0】C语言图形库GTK+3.0在Windows Cygwin下的环境配置(更新时间:2016-04-21)
- L1-8. 求整数段和
- Eclipse配置Javascript开发环境图文教程
- wireshark抓取OpenFlow数据包
- SpringMVC利用AOP实现自定义注解记录日志
- 使用Echarts画图
- sql按小时统计信息量
- Python菜鸟学习手册15----多线程
- 一个关于ListCtrl响应事件获得所在行数的问题
- Git小记
- 将List中的User对象转化为json数据格式
- C++作业4
- 行内元素与块级元素比较全面的区别和转换
- 多进程与多线程区别