dhm

<center>dhm-echarts</center> ============================

    echarts3图表封装,前台ajax通过自定义div属性实现传值,后台通过各种数据适配器自动组装达到图表封装,以实现echarts图表展示,也可以自定义适配器。以及分析预测echarts图表拟合曲线算法。

项目地址:https://git.oschina.net/duhongming/dhm-echarts

项目交流QQ群:551709145 验证码:码云

目录

1 Maven项目说明

2 dhm-echarts-web项目

3 dhm-echarts-core项目

4 dhm-echarts-calculate项目

5 dhm-echarts-bean项目

6 highcharts3D项目

附录

1 Maven项目说明

  • dhm-echarts-bean:echarts图表的所有Option对象的JavaBean封装,以及针对highcharts的3D柱状图和3D饼状图的JavaBean封装

  • dhm-echarts-calculate:echarts图表拟合曲线算法:多项式回归方程(通过散点拟合最优方程)、余弦相似度(曲线相似度)等算法

  • dhm-echarts-core:echarts图表基本图表配置、数据适配器、图表配置、点击事件数据结构封装

  • dhm-echarts-web:图表演示页面 http://localhost:8080/dhm-echarts-web/echarts/demo

    新版测试地址:http://localhost:8080/dhm-echarts-web/

  • dhm-echarts-springboot:图表演示页面和(dhm-echarts-web)两种展示风格

  • dhm-echarts架构图: alt text

1.1 web项目部署(echarts min 部署)

1<!-- 必要文件:引入jquery --> 2<script src="${ctxStatic}/jquery/jquery-1.8.3.min.js" type="text/javascript"></script> 3<!-- ECharts必要文件 --> 4<script src="${ctxStatic}/echarts/echarts.min.js"></script> 5<!-- 引入 ECharts ajax自定义封装 --> 6<script src="${ctxStatic}/echarts/echarts.ajax.js"></script> 7<!-- 引入 ECharts css样式封装 --> 8<style type="text/css"> 9.echarts { 10 height: 360px; 11 width: 740px; 12 overflow: hidden; 13 padding : 10px; 14 margin-bottom: 10px; 15 border: 1px solid #e3e3e3; 16 -webkit-border-radius: 4px; 17 -moz-border-radius: 4px; 18 border-radius: 4px; 19 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); 20 -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); 21 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); 22} 23</style>

1.2 web项目部署(echarts all 部署)

1<!-- 必要文件:引入jquery --> 2<script src="${ctxStatic}/jquery/jquery-1.8.3.min.js" type="text/javascript"></script> 3 4<!-- 动态图表文件:sockjs必须要放在echarts.min.js上面、jquery-1.8.3.min.js下面,防止JS冲突 --> 5<script src="${ctxStatic}/sockjs/sockjs-1.1.1.min.js" type="text/javascript"></script> 6 7<!-- ECharts必要文件 --> 8<script src="${ctxStatic}/echarts/echarts.min.js"></script> 9<!-- ECharts统计分析 --> 10<script src="${ctxStatic}/echarts/ecStat.min.js"></script> 11<!-- ECharts注水图 --> 12<script src="${ctxStatic}/echarts/echarts-liquidfill.min.js"></script> 13<!-- 引入 ECharts 主题 --> 14<script src="${ctxStatic}/echarts/theme/dark.js"></script> 15<script src="${ctxStatic}/echarts/theme/infographic.js"></script> 16<script src="${ctxStatic}/echarts/theme/macarons.js"></script> 17<script src="${ctxStatic}/echarts/theme/roma.js"></script> 18<script src="${ctxStatic}/echarts/theme/shine.js"></script> 19<script src="${ctxStatic}/echarts/theme/vintage.js"></script> 20<!-- 引入 ECharts 地图 --> 21<script src="${ctxStatic}/echarts/map/china.js"></script> 22<!-- 引入 ECharts ajax自定义封装 --> 23<script src="${ctxStatic}/echarts/echarts.ajax.js"></script> 24 25<!-- 弹出dialog --> 26<link rel="stylesheet" type="text/css" href="${ctxStatic}/layui/build/css/codeshow.css"> 27<link href="${ctxStatic}/jquery-jbox/2.3/Skins/Bootstrap/jbox.min.css" rel="stylesheet" /> 28<script src="${ctxStatic}/jquery-jbox/2.3/jquery.jBox-2.3.min.js" type="text/javascript"></script> 29 30<!-- 引入 ECharts css样式封装 --> 31<style type="text/css"> 32.echarts { 33 height: 360px; 34 width: 740px; 35 overflow: hidden; 36 padding : 10px; 37 margin-bottom: 10px; 38 border: 1px solid #e3e3e3; 39 -webkit-border-radius: 4px; 40 -moz-border-radius: 4px; 41 border-radius: 4px; 42 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); 43 -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); 44 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); 45} 46</style>

1.3 web项目部署(3D 图表 部署)

1<!-- HighCharts单文件引入 --> 2<script src="${ctxStatic}/highcharts/code/highcharts.js"></script> 3<script src="${ctxStatic}/highcharts/code/highcharts-3d.js"></script> 4<!-- HighCharts导出引入 --> 5<script src="${ctxStatic}/highcharts/code/modules/exporting.js"></script> 6<!-- HighCharts导出工具类 --> 7<script src="${ctxStatic}/export-csv/export-csv.js"></script> 8<!-- HighCharts工具类 highchartTable单文件引入 --> 9<script src="${ctxStatic}/jquery-highchartTable-plugin/jquery.highchartTable.js"></script> 10<!-- HighCharts汉化工具类(放到最后进行汉化) --> 11<script src="${ctxStatic}/highcharts-zh_CN/highcharts-lang-zh_CN.js"></script> 12<script src="${ctxStatic}/highcharts/code/themes/grid-light.js"></script> 13<!-- HighCharts主题 14<script src="${ctxStatic}/highcharts/code/themes/dark-green.js"></script> 15<script src="${ctxStatic}/highcharts/code/themes/dark-blue.js"></script> 16<script src="${ctxStatic}/highcharts/code/themes/dark-unica.js"></script> 17<script src="${ctxStatic}/highcharts/code/themes/gray.js"></script> 18<script src="${ctxStatic}/highcharts/code/themes/grid.js"></script> 19<script src="${ctxStatic}/highcharts/code/themes/sand-signika.js"></script> 20<script src="${ctxStatic}/highcharts/code/themes/skies.js"></script>-->

1.4 Maven的POM引用

1<!-- echarts图表java封装 --> 2<dependency> 3 <groupId>com.duhongming</groupId> 4 <artifactId>dhm-echarts-core</artifactId> 5 <version>3.0.0.2</version> 6</dependency> 7<!-- java封装计算算法 --> 8<dependency> 9 <groupId>com.duhongming</groupId> 10 <artifactId>dhm-echarts-calculate</artifactId> 11 <version>3.0.0.2</version> 12</dependency> 13 14<!-- spring websocket--> 15<dependency> 16 <groupId>org.springframework</groupId> 17 <artifactId>spring-websocket</artifactId> 18 <version>${spring.version}</version> 19</dependency> 20<dependency> 21 <groupId>org.springframework</groupId> 22 <artifactId>spring-messaging</artifactId> 23 <version>${spring.version}</version> 24</dependency> 25 26<!-- 由于Spring是采用对JSON进行了封装的jackson来生成JSON和返回给客户端 开始--> 27<dependency> 28 <groupId>com.fasterxml.jackson.core</groupId> 29 <artifactId>jackson-core</artifactId> 30 <version>2.4.4</version> 31</dependency> 32<dependency> 33 <groupId>com.fasterxml.jackson.core</groupId> 34 <artifactId>jackson-databind</artifactId> 35 <version>2.4.4</version> 36</dependency> 37<dependency> 38 <groupId>com.fasterxml.jackson.core</groupId> 39 <artifactId>jackson-annotations</artifactId> 40 <version>2.4.4</version> 41</dependency> 42<!-- 由于Spring是采用对JSON进行了封装的jackson来生成JSON和返回给客户端 结束-->

2 dhm-echarts-web项目

2.1 页面图表div设置说明

1 <!--ECharts 准备一个具备大小(宽高)的 DOM --> 2 <div id="demo-line" style="float:left" class="echarts" 3 echarts-type="line" 4 echarts-title="未来一周气温变化" 5 echarts-link="https://www.baidu.com/" 6 echarts-subtitle="折线图" 7 echarts-sublink="https://www.baidu.com/" 8 echarts-theme="macarons" 9 echarts-toolbox="true" 10 echarts-datazoom="true" 11 echarts-markpoint="true" 12 echarts-markline="true" 13 echarts-x-axis-name="日期(星期)" 14 echarts-y-axis-name="最高温度(°C),最低温度(°C)" 15 echarts-url="${contextPath}/echarts/line" 16 ></div>

div属性

默认值

说明

Html属性:id

id必须唯一

Html属性:class

echarts

必须是echarts

Echarts基础属性: echarts-type

line

line:折线图<br> bar:柱状图<br> pie:饼状图 <br><br>rose:玫瑰图 <br>funnel:漏斗图 <br>radar:雷达图 <br>scatter:散点图<br>gauge:仪表盘<br>liquidfill:注水图<br>map:地图<br>calendar:日历图<br><br>pie3d:3D饼状图<br> bar3d:3D柱状图<br><br>multidata-scatter:多维数据散点图<br>multidata-heatmap:多维数据热力图

Echarts基础属性: echarts-title

图表标题

图表标题

Echarts基础属性: echarts-link

图表标题链接

Echarts基础属性: echarts-subtitle

图表副标题

图表副标题

Echarts基础属性: echarts-sublink

图表副标题链接

Echarts基础属性: echarts-theme

macarons/dark/infographic/roma/shine/vintage

Echarts组件:echarts-toolbox

false

是否需要工具栏

Echarts组件:echarts-datazoom

false

是否需要数据域

Echarts组件:echarts-stack

false

是否需要柱状堆积图

Echarts组件:echarts-markpoint

false

是否需要标记点

Echarts组件:echarts-markline

false

是否需要标记线

Echarts坐标轴:echarts-x-axis-name

X轴单位,eg: 日期(星期)

Echarts坐标轴:echarts-split-number

5

坐标轴的分割段数

Echarts坐标轴:echarts-min-interval

0.0

坐标轴最小间隔大小

Echarts坐标轴:echarts-y-axis-name

Y轴单位(两个Y轴单位,中间用逗号分隔)<br>eg: 最高温度(°C),最低温度(°C)

Echarts跳转:echarts-url

后台SpringMVC控制器,通过@RequestBody获取数据

Echarts跳转:echarts-socket

为空或没有则不是动态图表

后台是Spring Socket控制器,通过TextMessage传递数据

Echarts跳转:echarts-onclick-id

图表点击事件

关联a标签id

其他:echarts-regression

散点图必要参数,否则不必要

只有echarts-type=scatter echarts-regression才有意义。<br>linear:线性回归拟合 <br>exponential:指数回归拟合<br> logarithmic:对数回归拟合<br> olynomial:多项式回归拟合

其他:echarts-measure-range

量程

只有echarts-type=gauge才有意义

其他:echarts-axis-label-show

是否显示刻度

只有echarts-type=gauge才有意义

2.2 Controller控制器中EchartsCore

1)创建EchartsCore对象,加载前台页面的属性参数,通过getBaseGsonOption获取gsonOption图表的基本配置都已经setter完成

1/** 2 * 折线图 3 * @param echartsConfig 4 * @return 5 */ 6@RequestMapping(value="line") 7public @ResponseBody String line(@RequestBody EchartsConfig echartsConfig){ 8 System.out.println("测试传入参数:"+echartsConfig.getParameters()); 9 return EchartsCore.getInstance().adapterLineAndBar(echartsConfig,dataService.getWeatherData()).toString(); 10}

2)gsonOption可以进行自定义配置

1 //自定义配置 2 gsonOption.title().x(X.center); 3 gsonOption.legend().left(X.left).orient(Orient.vertical);

3)通过adapterLineAndBar将数据setter进gsonOption,然后return gsonOption.toString()通过@ResponseBody返回到页面ajax中

4)gsonOption可以不使用适配器,gsonOption中的series对象完成图表的显示

2.3 页面ajax获取表单中的数据

1)有一个包裹form的标签,传递的button按钮即可

1 <form> 2 <input name="dateStr" value="日期"/> 3 <input name="temperatureStr" value="温度"/> 4 </form> 5 <button id="submitButton">测试传入参数</button>

2)刷新指定图表

1 $("#submitButton").click(function(){ 2 $("#demo-line").dblclick(); 3 }); 4 #注意:dblclick()要替换成contextmenu(),因为我能通过js控制鼠标不能右击,而通过js控制图表右击点击事件,只有这一个通道供echarts使用。

3)后台获取该图表的数据,已经保存在echartsConfig中

	System.out.println("测试传入参数:"+echartsConfig.getParameters());

2.4 给图表添加点击事件

1)准备一个a html标签

	<a id="demo-bar-onclick" href="${contextPath}/echarts/onclick"></a>

2)通过在div属性echarts-onclick-id关联a标签

1 <div id="demo-bar" style="float:left" class="echarts" 2.. 3 echarts-onclick-id="demo-bar-onclick" 4 ></div>

3)当target="_jbox"会弹出对话框

1对话框宽度:jbox-width="1200" 2对话框高度:jobx-height="400" 3对话框标题:jbox-title="跳转dialog对话框-{seriesName}-{name}",其中{seriesName}是点击图表所在的legend名称,{name}是点击图表所在的x轴的名称。

4) 后台取值

1/** 2 * 获取参数到前台显示 3 * 也可以通过制定控制器去请求其他图表的URL 4 * @param echartsOnClick 5 * @return 6 */ 7@RequestMapping(value="onclick") 8public String onclick(EchartsOnClick echartsOnClick,ModelMap modelMap){ 9 modelMap.put("echartsOnClick",echartsOnClick); 10 return "onclick"; 11}

2.5 整体图表Echarts背景水印

修改echarts.ajax.js中的var waterMarkText = 'Echarts' 即可,为空则没有背景水印。

3 dhm-echarts-core项目

3.1 echartsCore中调用的适配器

1 所模拟的数据都可以通过Mybatis、Hibernate、Spring JDBC、Spring JPA 2 生成多行的二维表格式: 3 List<Map<String,Object>> 4 List<T> 5 List<Object[]> 6 生成单行的二维表格式:Map<String,Object>

适配器

适配器方法

适配器数据类型

适配器说明

EchartsLineAndBarAdapter

adapterLineAndBar

List<Map<String,Object>>

折线图和柱状图

EchartsPieAdapter

adapterPie

Map<String,Object>

饼状图

EchartsDoubleNumLineAdapter

adapterDoubleNumLine

Map<String,List<T>>

双数值折线图

EchartsReverseBarAdapter

adapterReverseBar

List<Map<String,Object>>

反转柱状图

EchartsRadarAdapter

adapterRadar

List<Map<String,Object>>

雷达图

EchartsMapAdapter

adapterMap

Map<String,Map<String,Double>>

地图

EchartsScatterAdapter

linear:线性回归<br>exponential:指数回归<br><br>logarithmic:对数回归<br>polynomial:多项式回归

Object[][]

散点图

动态仪表(无适配器,只需要数据类型)

Socket协议

Double

动态仪表

动态注水图(无适配器,只需要数据类型)

Socket协议

Double

动态注水图

日历图(无适配器,只需要数据类型)

calendar:日历图

List<Map<String,Object>>

日历图

多维数据(无适配器,只需要数据类型)

multidata-scatter:多维数据散点图<br>multidata-heatmap:多维数据热力图

new EchartsHeatMap(list);

多维数据

3.2 adapterLineAndBar、adapterReverseBar适配器数据类型

1)数据库结构

列1

列2

列3

列n

x:日期

y0:最高气温

y1:最低气温

...

行1

周一

11

11

...

行2

周二

22

22

...

行n

...

...

...

...

2)说明 相当于二维数据表数据,x:代表X轴的数据,y0:代表Y轴左面的数据,y1:代表Y轴右面的数据

3)通过数据库sql语句到List<Map<String,Object>>应该非常简单我就不具体说明了;

4)socket(动态图表传递的数据结构)后台定时推送

列1

列2

列3

列n

xxx

最高气温

最低气温

...

行1

周一

11

11

...

行2

周二

22

22

...

行n

...

...

...

...

相当于二维数据表数据,xxx代表X轴的数据,最高气温、最低气温代表Y轴数据,不用y0/y1在进行区分了

5)页面

<div echarts-socket="<%=basePath%>/webSocket/line/data">/</div>即可

6)折线图条形图混合图

1 //指定每条曲线的类型 2 gsonOption.series().get(0).type(SeriesType.line); 3 gsonOption.series().get(1).type(SeriesType.bar);

3.3 adapterPie适配器数据类型

Map<String,Object> key-value这个是最简单的,怎么都能实现

3.4 adapterDoubleNumLine适配器数据类型

1)数据结构

1Map<String,List<Map<String,Object>>> 2Map<String,List<T>> 3Map<String,List<Object[]>> 4 5Map中的泛型中的String是每条曲线的名称即legend,即每条曲线的名字 6 7所模拟的数据都可以通过Mybatis、Hibernate、Spring JDBC、Spring JPA 8生成多行的二维表格式,如以下三种,其实他们三个是同一个,可互相转换,通过一个适配器完成三种泛型的适配: 9 List<Map<String,Object>>(sql只需要两个列,第一列必须是x轴数据,第二列必须是y轴数据) 10 List<T>(注意该JavaBean,成员变量第一个必须是x轴数据,第二个必须是y轴数据) 11 List<Object[]>(echarts所需数据类型,可以通过上述两个转化成,而上述两个就是jdbc的通用数据类型)

2)代码实现

	EchartsCore.getInstance().adapterDoubleNumLine(echartsConfig,Map<String,List<T>>).toString()

3.5 adapterRadar适配器数据类型

1)数据结构

列1

列2

列3

列4

列n

x:name

y:预算分配(Allocated Budget)

y:实际开销(Actual Spending)

x:max

...

行1

销售(sales)

4300

5000

6500

...

行2

管理(Administration)

10000

14000

16000

...

行3

信息技术(Information Techology)

28000

28000

30000

...

行n

...

...

...

...

...

2)说明

1相当于二维数据表数据,x:name代表雷达图中的每一极,x:max 代表雷达图每一极的最大值, 2y:预算分配(Allocated Budget)代表所有极组的名称, 3y:实际开销(Actual Spending)代表另一所有极组的名称;

3)通过数据库sql语句到List<Map<String,Object>>应该非常简单我就不具体说明了

3.6 adapterMap适配器数据类型

1)数据结构

1--|类别Map<String,XXX > 2 --|地名:指标Map<XXX,Map<String,Double>> 3Map<String,Map<String,Double>> 4 5 6 {"iphone3": 7 {"北京":609.0,"重庆":99.0,"新疆":183.0,"广东":830.0,"天津":883.0,"浙江":335.0,"澳门":541.0,"广西":287.0,"内蒙古":728.0,"宁夏":704.0,"江西":877.0,"台湾":724.0,"贵州":206.0,"安徽":882.0,"陕西":151.0,"辽宁":126.0,"山西":594.0,"青海":184.0,"香港":243.0,"四川":798.0,"江苏":100.0,"河北":191.0,"西藏":210.0,"福建":516.0,"吉林":975.0,"海南":994.0,"云南":155.0,"上海":690.0,"湖北":255.0,"湖南":120.0,"甘肃":471.0,"山东":398.0,"河南":937.0,"黑龙江":467.0}, 8 "iphone4": 9 {"北京":949.0,"重庆":809.0,"新疆":1.0,"香港":856.0,"四川":526.0,"广东":658.0,"天津":6.0,"浙江":754.0,"河北":803.0,"澳门":649.0,"西藏":629.0,"福建":746.0,"内蒙古":684.0,"吉林":876.0,"上海":213.0,"宁夏":337.0,"江西":324.0,"安徽":481.0,"山西":361.0}, 10 "iphone5": 11 {"上海":672.0,"北京":423.0,"香港":376.0,"台湾":45.0,"广东":463.0,"天津":742.0,"澳门":375.0}}

3.7 散点图适配器数据类型

1Double data[][] = new Double[][]{{96.24, 11.35},{33.09, 85.11},{57.60, 36.61},{36.77, 27.26},{20.10, 6.72},{45.53, 36.37}, {110.07, 80.13},{72.05, 20.88},{39.82, 37.15},{48.05, 70.50},{0.85, 2.57},{51.66, 63.70}, {61.07, 127.13},{64.54, 33.59},{35.50, 25.01},{226.55, 664.02},{188.60, 175.31},{81.31, 108.68}}; 2 3 4二维数组中第一个是x轴数据,第二个是y轴数据,所以该二维数组就是一堆离散的点

3.8 日历图适配器数据类型

1)数据库结构

列1

列2

列3

列n

echartsDate

工作

睡觉

娱乐

行1

2017-05-01

10

8

6

行2

2017-05-02

8

10

6

行n

...

...

...

...

2)说明 相当于二维数据表数据,echartsDate 代表日历的数据,工作、睡觉、娱乐数据类别

3)通过数据库sql语句到List<Map<String,Object>>应该非常简单我就不具体说明了

3.9 多维数据适配器数据类型

1)数据库结构

列1

列2

列3

x

y

z

行1

2017-06-19

工作票

00

行2

2017-06-20

工作票

10

行3

2017-06-20

操作票

11

行4

2017-06-21

操作票

21

2)调用EchartsHeatMap

EchartsHeatMap echartsHeatMap = new EchartsHeatMap(list);

4 dhm-echarts-calculate项目

计算拟合曲线算法,通过多项式回归分析,找出R^2最优的表达式拟合曲线;

4.1 放入观测值

1#Double data[][]中的数组分别代表{x,y} 2Double data[][] = new Double[][]{{4d,38.8},{5d,129.6},{6d,259.9},{7d,447.1},{8d,702.5},{9d,1015.2},{10d,1346.5},{11d,1665.1},{12d,1927.8},{12.4,2000d},{13d,2000d},{14d,2000d},{15d,2000d},{16d,2000d},{17d,2000d},{18d,2000d},{19d,2000d},{20d,2000d},{21d,2000d},{22d,2000d},{23d,2000d},{24d,2000d},{25d,2000d}};

4.2 拟合度最好的即R^2最接近1的曲线

String expression = new PolynomialCurveCore().polynomialCurveExpresionAll(data);

4.3准备观测值X轴数据重新拟合下看看

Double d[] = new Double[data.length];

4.4重新生成通过拟合方程计算的Y轴的值

Double newData[][] = FelCore.getResult(expression,d)

5 dhm-echarts-bean项目

1我是fork GitHub上的一位同仁的代码: 2https://git.oschina.net/free/ECharts

eg: alt text

6 highcharts3D项目

1.引入JS

1 <!-- HighCharts单文件引入 --> 2 <script src="${ctxStatic}/highcharts/code/highcharts.js"></script> 3 <script src="${ctxStatic}/highcharts/code/highcharts-3d.js"></script> 4 <!-- HighCharts汉化工具类(放到最后进行汉化) --> 5 <script src="${ctxStatic}/highcharts-zh_CN/highcharts-lang-zh_CN.js"></script>

2.div标签只需bar或者pie后面加上3d

1 <!--HighCharts 准备一个具备大小(宽高)的 DOM --> 2 <div id="demo-bar3d" style="float:left" class="echarts" 3 echarts-type="bar3d" 4 echarts-title="未来一周气温变化" 5 echarts-subtitle="条形图" 6 echarts-theme="macarons" 7 echarts-toolbox="false" 8 echarts-datazoom="false" 9 echarts-x-axis-name="日期(星期)" 10 echarts-y-axis-name="温度(°C)" 11 echarts-url="${contextPath}/highcharts/bar3d" 12 ></div> 13 <!--HighCharts 准备一个具备大小(宽高)的 DOM --> 14 <div id="demo-pie3d" style="float:left" class="echarts" 15 echarts-type="pie3d" 16 echarts-title="搜索引擎现状" 17 echarts-subtitle="饼状图" 18 echarts-theme="macarons" 19 echarts-url="${contextPath}/highcharts/pie3d" 20 ></div>

3.后台解析

1 /** 2 * 3D条形图 3 * @param echartsConfig 4 * @return 5 */ 6 @RequestMapping(value="bar3d") 7 public @ResponseBody String bar3d(@RequestBody EchartsConfig echartsConfig){ 8 //配置 9 HighChartsCore highChartsCore = HighChartsCore.getInstance(); 10 GsonOption gsonOption = highChartsCore.getBaseGsonOption(echartsConfig); 11 gsonOption = highChartsCore.adapterBar3D(echartsConfig, gsonOption, getBarData()); 12 System.out.println("测试传入参数:"+echartsConfig.getParameters()); 13 return gsonOption.toString(); 14 } 15 16 /** 17 * 3D饼状图 18 * @param echartsConfig 19 * @return 20 */ 21 @RequestMapping(value="pie3d") 22 public @ResponseBody String pie3d(@RequestBody EchartsConfig echartsConfig){ 23 //配置 24 HighChartsCore highChartsCore = HighChartsCore.getInstance(); 25 GsonOption gsonOption = highChartsCore.getBaseGsonOption(echartsConfig); 26 gsonOption = highChartsCore.adapterPie3D(echartsConfig, gsonOption, getPieData()); 27 return gsonOption.toString(); 28 }

eg: alt text

附录

附Echarts项目

0)echarts

https://github.com/ecomfe/echarts

history:echarts.min3.5.4.js

now:echarts.min3.7.2.js

1)echarts统计插件

https://github.com/ecomfe/echarts-stat

2)echarts注水图插件

https://github.com/ecomfe/echarts-liquidfill

3)echarts字符云插件

https://github.com/ecomfe/echarts-wordcloud

附Highcharts插件

0) highcharts

https://github.com/highcharts/highcharts

1) highcharts导出CSV插件

https://github.com/highcharts/export-csv

2) highcharts汉化插件

https://github.com/hcharts/highcharts-zh_CN

3) highcharts表格插件

https://github.com/highchartTable/jquery-highchartTable-plugin

附Vis插件

http://visjs.org/#download_install

https://github.com/almende/vis

附Socket插件

1)sockjs-client(SpringMVC)

https://github.com/sockjs/sockjs-client

2)stomp-websocket(SpringBoot)

https://github.com/jmesnil/stomp-websocket

附UI页面

1)layui

https://github.com/sentsin/layui/


https://github.com/dabeng/OrgChart

https://sbstjn.com/timesheet.js/ https://github.com/sbstjn/timesheet.js

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )