这是一个针对ECharts2.x版本的Java类库,实现了所有ECharts中的Json结构对应的Java对象,并且可以很方便的创建Option,Series等
这是一个针对ECharts2.x版本的Java类库,实现了所有ECharts中的Json结构对应的Java对象,并且可以很方便的创建Option,Series等
本项目是一个供Java开发使用的ECharts的开发包,主要目的是方便在Java中构造ECharts中可能用到的全部数据结构,如完整的结构Option。Option中的数据Series,包含Bar-柱状图,Line-折线图,Pie-饼图,Chord-和弦图等,支持ECharts中的所有图表。支持所有的Style类,如AreaStyle,ChordStyle,ItemStyle,LineStyle,LinkStyle等等。支持多种Data数据类型,一个通用的Data数据,以及PieData,MapData,ScatterData,KData等针对性的数据结构。
你可以使用本项目直接构造一个Option对象,转换为JSON后直接用js设置myChart.setOption(option),或者你也可以在前端构造基本的Option对象,然后使用本项目来构造其中需要的任意某部分的数据,如使用Series支持的图表类型创建Series数据。
为了便于使用对应版本的ECcharts,本项目的版本号会使用和ECharts相同的版本号。
由于本项目反馈的bug并不多,为了方便每一个开发人员,每次修复bug都会发布一个小版本,并且bug修复只针对当前的大版本进行修复。
ECharts-Java使用Java快速开发ECharts图表
com.github.abel533
ECharts
最新版本
打开后,查找需要的版本,下载其中的 javadoc 文件,解压即可。
3.x版本相比2.x版本改动很大,除了部分图表不一样外,少数api也有改动,因此如果要从2.x升级3.x,一定要做好测试!
avoidLabelOverlap参数Position位置 centerLine 的areaStyle属性LineStyle属性Style和Label的属性,对应的normal和emphasis增加position,formatter,textStyle三个属性Gauge中AxisLine类型使用错误的bug#65LineType中的broken拼写错误#58TreeData中的value改为Double类型,仍然保留一个Integer的构造方法TreeData添加缺少的两个属性symbol和symbolSize#69AxisPointer增加show属性,该属性出现在scatter6的例子中AbstractData中的List data属性和相关调用都去掉泛型类型``EMap,和Map(地图)类完全相同,只是为了避免和java.util.Map同时使用时不方便SeriesFactory,提供了所有Series子类的创建方法Legend通用去掉``FsonOption相关的类BarTest14测试,彩虹柱状图Option正式代码中使用,不需要任何依赖。
GsonOption正式代码中可以使用,需要引入Gson包,使用toString()方法可以转换为JSON结构的数据(支持function,详情看下面的function说明)。
EnhancedOption测试专用,主要方便在浏览器中直接查看效果。
使用GsonOption,FsonOption的toString()方法返回给前端时,前端需要使用eval('('+optionJsonStr+')')转换为JSON结构
由于JSON标准中不包含function类型,因而大多数的JSON库都不直接支持这种类型,处理这种类型最简单的方式就是转换为JSON字符串时,对字符串进行处理。
虽然像jackson json和fastjson通过注解或者自定义的实现序列化接口可以实现,毕竟和JSON库的结合太密切了,而且使用起来也很麻烦,不如直接处理字符串,或者在js中处理。
本项目中提供了GSON实现的GsonOption,就是重写了toString()方法,改为输出JSON结构的字符串,并且支持以下两种function形式:
{
formatter:function(value){
return value.substring(0,8);
}
}
//和
{
formatter:(function(){
return 'Temperature :
{b}km : {c}°C';
})()
}当然这种形式在Java中书写的时候有着严格的要求:
option.tooltip().trigger(Trigger.axis).formatter("function(value){return value.substring(0,8);}");
option.tooltip().trigger(Trigger.axis).formatter("(function(){return 'Temperature :
{b}km : {c}°C';})()");
先看第一种,这里的"function中,双引号和function必须连着,中间不能存在空格,否则不会识别。然后是结尾的}",这里也必须连着不能有空格,在首尾这两段代码之间不能出现}",否则会判断出错。如果在{}中的代码有字符串,请使用单引号',双引号出现在单引号内时使用\\"即可。除此之外没有别的限制。
再看第二种,这里的"(function中,双引号、括号和function必须连着,中间不能存在空格,否则不会识别。然后是结尾的})()",这里也必须连着不能有空格,在首尾这两段代码之间不能出现})()",否则会判断出错。如果在{}中的代码有字符串,请使用单引号',双引号出现在单引号内时使用\\"即可。除此之外没有别的限制。
上述对function的处理很简单,不限制在formatter使用,所有值都能这么写,你可以参考写出自己的Option
对应的ECharts例子地址: http://echarts.baidu.com/doc/example/line5.html
测试代码地址:LineTest5.java
…代码生成的json结果:
…(function(){})()执行JS代码对应的ECharts例子地址: http://echarts.baidu.com/doc/example/pie6.html
测试代码地址:PieTest6.java
…这段代码注意
.x("(function(){return document.getElementById('main').offsetWidth / 2;})()")这个地方,这里巧妙的利用(function(){})()执行JS代码,实现了官方例子中的功能,生成的JSON结果如下:
…No open issues yet, or sync has not completed.