使用ichartjs生成图表
官网:http://www.ichartjs.com/
ichartjs 是一款基于HTML5的图形库。使用纯javascript语言, 利用HTML5的canvas标签绘制各式图形。 ichartjs致力于为您的应用提供简单、直观、可交互的体验级图表组件。是WEB/APP图表展示方面的解决方案 。如果你正在开发HTML5的应用,ichartjs正好适合您。 ichartjs目前支持饼图、环形图、折线图、面积图、柱形图、条形图。ichartjs是基于Apache License 2.0协议的开源项目。
ichartjs 对新手是十分友好的,它的强大之处在于可以根据需要自动生成图表,然后你只需要将数据绑定就可以了。所以,对于新手来说,不需要你深入了解和学习,只需要绑定数据就可以了。
例子:
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>新增会员分析</title>
- <%
- String basePath = request.getContextPath();
- //验证session,防止直接进入该页面
- Object obj = request.getSession().getAttribute("current");//获取session对象
- if(obj == null) {
- response.sendRedirect("../z_login.jsp");
- }
- %>
- <script type="text/javascript" src="../ichartjs/ichart.1.2.1.min.js"></script>
- <script type="text/javascript" src="../js/jquery-3.2.1.min.js"></script>
- <script type="text/javascript"
- src="../jquery-easyui-1.5.1/jquery.easyui.min.js"></script>
- <link rel="shortcut icon" href="img/logo1.jpg"/>
- <link type="text/css" rel="stylesheet"
- href="../jquery-easyui-1.5.1/themes/icon.css"></link>
- <link type="text/css" rel="stylesheet"
- href="../jquery-easyui-1.5.1/themes/default/easyui.css"></link>
- <script type="text/javascript"
- src="../jquery-easyui-1.5.1/locale/easyui-lang-zh_CN.js"></script>
- <style type="text/css">
- *{margin:0;padding:0}
- .anal{
- text-decoration:none;
- color:black;
- }
- </style>
- </head>
- <body>
- <a id="analyear" class="anal" href="#">根据年份查询</a><br>
- <a id="analmon" class="anal" href="#">根据月份查询</a><br>
- <div id='ichart-render'></div>
- </body>
- </html>
- <script>
- $(function() {
- $("#analmon").click(function() {
- $.ajax({
- type : "post",
- url : "../useranal/analmon.do",
- dataType : "json",//返回的
- success : function(data) {
- for(var i in data.rows.baifenbi){
- alert(i);
- }
- var chart = iChart.create({
- render:"ichart-render",
- width:800,
- height:400,
- background_color:"#fefefe",
- gradient:false,
- color_factor:0.2,
- border:{
- color:"BCBCBC",
- width:1
- },
- align:"center",
- offsetx:0,
- offsety:0,
- sub_option:{
- border:{
- color:"#BCBCBC",
- width:1
- },
- label:{
- fontweight:500,
- fontsize:11,
- color:"#4572a7",
- sign:"square",
- sign_size:12,
- border:{
- color:"#BCBCBC",
- width:1
- },
- background_color:"#fefefe"
- }
- },
- shadow:true,
- shadow_color:"#666666",
- shadow_blur:2,
- showpercent:false,
- column_width:"70%",
- bar_height:"70%",
- radius:"90%",
- title:{
- text:"新增会员分析",
- color:"#111111",
- fontsize:20,
- font:"微软雅黑",
- textAlign:"center",
- height:30,
- offsetx:0,
- offsety:0
- },
- subtitle:{
- text:"月新增会员分析",
- color:"#111111",
- fontsize:16,
- font:"微软雅黑",
- textAlign:"left",
- height:20,
- offsetx:0,
- offsety:0
- },
- footnote:{
- text:"",
- color:"#111111",
- fontsize:12,
- font:"微软雅黑",
- textAlign:"right",
- height:20,
- offsetx:0,
- offsety:0
- },
- legend:{
- enable:false,
- background_color:"#fefefe",
- color:"#333333",
- fontsize:12,
- border:{
- color:"#BCBCBC",
- width:1
- },
- column:1,
- align:"right",
- valign:"center",
- offsetx:0,
- offsety:0
- },
- coordinate:{
- width:"80%",
- height:"84%",
- background_color:"#ffffff",
- axis:{
- color:"#a5acb8",
- width:[1,"",1,""]
- },
- grid_color:"#d9d9d9",
- label:{
- fontweight:500,
- color:"#666666",
- fontsize:11
- }
- },
- label:{
- fontweight:500,
- color:"#666666",
- fontsize:11
- },
- type:"column2d",
- data:data.rows,
- });
- chart.draw();
- },
- error : function(msg) {
- cosole.log(msg);
- }
- });
- });
- $("#analyear").click(function() {
- $.ajax({
- type : "post",
- url : "../useranal/analyear.do",
- dataType : "json",//返回的
- success : function(data) {
- for(var i in data.rows.baifenbi){
- alert(i);
- }
- var chart = iChart.create({
- render:"ichart-render",
- width:800,
- height:400,
- background_color:"#fefefe",
- gradient:false,
- color_factor:0.2,
- border:{
- color:"BCBCBC",
- width:1
- },
- align:"center",
- offsetx:0,
- offsety:0,
- sub_option:{
- border:{
- color:"#BCBCBC",
- width:1
- },
- label:{
- fontweight:500,
- fontsize:11,
- color:"#4572a7",
- sign:"square",
- sign_size:12,
- border:{
- color:"#BCBCBC",
- width:1
- },
- background_color:"#fefefe"
- }
- },
- shadow:true,
- shadow_color:"#666666",
- shadow_blur:2,
- showpercent:false,
- column_width:"70%",
- bar_height:"70%",
- radius:"90%",
- title:{
- text:"新增会员分析",
- color:"#111111",
- fontsize:20,
- font:"微软雅黑",
- textAlign:"center",
- height:30,
- offsetx:0,
- offsety:0
- },
- subtitle:{
- text:"年新增会员分析",
- color:"#111111",
- fontsize:16,
- font:"微软雅黑",
- textAlign:"left",
- height:20,
- offsetx:0,
- offsety:0
- },
- footnote:{
- text:"",
- color:"#111111",
- fontsize:12,
- font:"微软雅黑",
- textAlign:"right",
- height:20,
- offsetx:0,
- offsety:0
- },
- legend:{
- enable:false,
- background_color:"#fefefe",
- color:"#333333",
- fontsize:12,
- border:{
- color:"#BCBCBC",
- width:1
- },
- column:1,
- align:"right",
- valign:"center",
- offsetx:0,
- offsety:0
- },
- coordinate:{
- width:"80%",
- height:"84%",
- background_color:"#ffffff",
- axis:{
- color:"#a5acb8",
- width:[1,"",1,""]
- },
- grid_color:"#d9d9d9",
- label:{
- fontweight:500,
- color:"#666666",
- fontsize:11
- }
- },
- label:{
- fontweight:500,
- color:"#666666",
- fontsize:11
- },
- type:"column2d",
- data:data.rows,
- });
- chart.draw();
- },
- error : function(msg) {
- cosole.log(msg);
- }
- });
- });
- });
- </script>
后台代码:
- /*
- * 查询月增会员
- */
- @ResponseBody
- @RequestMapping("/analmon")
- public JSONObject AnalMon() {
- JSONObject jo = new JSONObject();
- List<Anal> list=useranalservice.AnalMon();
- for(Anal a:list){
- a.setColor("#"+Color.getRandColorCode());
- }
- jo.put("rows", list);
- return jo;
- }
Sql语句:
- <!-- 根据月份查询新增会员 -->
- <select id="AnalMon" resultType="Anal">
- select to_char(cu.createtime, 'yyyy-mm') name, count(*) value
- from (select u.*
- from CRM_USERS u
- ) cu
- group by to_char(cu.createtime, 'yyyy-mm')
- order by to_char(cu.createtime, 'yyyy-mm')
- </select>
实体类:
- package com.hanqi.model;
- public class Anal {
- private String name;
- private String value;
- private String color;
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getValue() {
- return value;
- }
- public void setValue(String value) {
- this.value = value;
- }
- public String getColor() {
- return color;
- }
- public void setColor(String color) {
- this.color = color;
- }
- public Anal() {
- super();
- // TODO Auto-generated constructor stub
- }
- public Anal(String name, String value, String color) {
- super();
- this.name = name;
- this.value = value;
- this.color = color;
- }
- @Override
- public String toString() {
- return "Anal [name=" + name + ", value=" + value + ", color=" + color + "]";
- }
- }
不过,ichartjs这样使用也有一个很大的问题,如果数据太多,展示的时候会很难看,而且目前这种方式只能生成柱状图和饼图。
要解决这两个问题,第一个问题可以尝试在查询数据的时候进行判断,限制用户查询太多的数据,并给出相应的提示。
第二个问题就需要深入的了解并学习iChatjs来自己生成图表了。
使用ichartjs生成图表的更多相关文章
- 关于使用FusionCharts生成图表时出现invalid xml data错误提示的解决方法
FusionCharts的确功能是够强大的.收集的功能估计更强大.在初次使用时,对着手册,一步一步操作,就是生成图表工具不成功.一直报"Invalid xml data"错误.后面 ...
- [转] C#操作EXCEL,生成图表的全面应用
gailzhao 原文 关于C#操作EXCEL,生成图表的全面应用 近来我在开发一个运用C#生成EXCEL文档的程序,其中要根据数据生成相应的图表,该图表对颜色和格式都有严格的要求,在百度和谷歌中搜索 ...
- 使用gnuplot对tpcc-mysql压测结果生成图表
tpcc-mysql的安装:http://www.cnblogs.com/lizhi221/p/6814003.html tpcc-mysql的使用:http://www.cnblogs.com/li ...
- python xlsxwriter库生成图表的应用
xlsxwriter可能用过的人并不是很多,不过使用后就会感觉,他的功能让你叹服,除了可以按要求生成你所需要的excel外 还可以加上很形象的各种图,比如柱状图.饼图.折线图等. 请看本人生成的: 这 ...
- PHP生成图表pChart
pChart是一个开源的图表生成库,主要涉及3个Class:pChart.class, pData.class, pCache.class,可生成20多种简单或复杂的图表,支持PNG,JPG,GIF通 ...
- [经验总结] 从其它sheet页引用数据生成图表时没有图例的解决办法
1.先给出一个在有数据区域的sheet页中生成的图表,比较全,图表和图例全部都有,如下图: 2.但是如果在其它 sheet页中引用该有数据的sheet数据时并生成图表,生成的图表只有图表区域显示,图例 ...
- 使用PowerDesigner 15对现有数据库进行生成图表结构
PowerDesigner的安装和基本使用,我就不阐述了.大家可以到这里看看:http://www.blogjava.net/wangdetian168/archive/2011/04/07/Powe ...
- python写入excel(xlswriter)--生成图表
一.折线图: # -*- coding:utf-8 -*- import xlsxwriter # 创建一个excel workbook = xlsxwriter.Workbook("cha ...
- Tpcc-MySQL对mysql数据库进行性能测试报告、分析及使用gnuplot生成图表展示
TPC-C是专门针对联机交易处理系统(OLTP系统)的规范,一般情况下我们也把这类系统称为业务处理系统. tpcc-mysql是percona基于TPC-C(下面简写成TPCC)衍生出来的产品,专用于 ...
随机推荐
- java 线程二
一.线程的优先级别 线程优先级别的使用范例: 1 package cn.galc.test; 2 3 public class TestThread6 { 4 public static void m ...
- 基于React Native的移动平台研发实践分享
转载:http://blog.csdn.net/haozhenming/article/details/72772787 本文目录: 一.React Native 已经成为了移动前端技术的趋势 二.基 ...
- iOS根据域名获取ip地址
引入头文件 #include <netdb.h> #include <sys/socket.h> #include <arpa/inet.h> //根据域名获取ip ...
- struts2一个和多个文件上传及下载
struts2的文件上传相比我们自己利用第三方jar包(commons-fileupload-1.2.1.jar commons-io-1.3.2.jar )要简单的多,当然struts2里面也是 ...
- ThinkPHP中:用户登录权限验证类
使用CommonAction.class.php公共类,统一判断用户是否登录 <?php //后台登录页 Class CommonAction extends Action{ //后台登录页面 ...
- java集合系列——java集合概述(一)
在JDK中集合是很重要的,学习java那么一定要好好的去了解一下集合的源码以及一些集合实现的思想! 一:集合的UML类图(网上下载的图片) Java集合工具包位置是java.util.* 二:集合工具 ...
- 调用惯例Calling Convention (或者说:调用约定)
调用惯例影响执行效率,参数的传递方式以及栈清除的方式. 调用惯例 参数传递顺序 谁负责清除参数 参数是否使用暂存器 register 从左到右 被调用者 是 pascal 从左到右 被调用者 否 ...
- Conscription poj3723(最大生成树)
Conscription Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6870 Accepted: 2361 Desc ...
- [js高手之路] html5 canvas动画教程 - 匀速运动
匀速运动:指的是物体在一条直线上运动,并且物体在任何相等时间间隔内通过的位移都是相等的.其实就是匀速直线运动,它的特点是加速度为0,从定义可知,在任何相等的时间间隔内,速度大小和方向是相同的. < ...
- SQLServer中SQL语句与可执行二进制语句
SQLServer可以执行正常SQL语句也可以执行被转换的二进制语句,一般会用此方法进行数据库注入操作,骗过基本的字符过滤 --将二进制格式转为普通SQL语句 ) = 0x53454C45435420 ...