[开源]eCharts配置简化包OptionCreator[typescript版]
eCharts存在问题
配置eCharts的option,对于大部分的开发者来说,复杂情况下是一件繁琐的事情。为什么繁琐,大致有以下这些原因
- 大小写敏感:在没有IDE的智能提示下,很容易写错,而且即使写错,eCharts不会报错,问题难以排查
- 阶层结构复杂:在复杂情况下,使用json手工编写配置,有一些属性在阶层结构中的位置,可能会搞错,同样的一个color属性,有些是在root下面的,有些是在series下面的
- 属性的类型:有些属性支持字符串,有些支持数字数组,有些兼容多种类型
OptionCreator需要解决的问题
配色
一般来说,偏工程的程序员不注意配色,字体等问题,所以代码中会持续收集一些好的配色,可以直接使用
/**配色表 6种 百度 */
public static colorlist_6_Baidu = ["#60acfc", "#32d3eb", "#5bc49f", "#feb64d", "#ff7c7c", "#9287e7"];

对于渐变色也准备了渐变色生成函数
/**渐变色
* @param direction - 方向
* @param startcolor - 开始颜色
* @param endcolor - 结束颜色
* @returns 渐变色
*/
public static geLinearGradient(direction: Direction, startcolor: string = '#c86589', endcolor: string = '#06a7ff'): any {

简单图形快速生成
上面的极坐标的代码可以很快生成,同时对于生成的图形,可以通过传统的属性设定的方式进行自定义的修改
import { OnInit, Component } from '@angular/core';
import { PolarOption } from '../OptionCreator/PolarOption';
import { ChartColor } from '../OptionCreator/ChartColor'
import { CommonFunction } from '../common';
@Component({
templateUrl: './polar_basic.component.html'
})
export class Polar_BasicComponent implements OnInit {
title = '极坐标-基本';
dataset = [
{ value: 50, name: '唐三' },
{ value: 100, name: '戴沐白' },
{ value: 150, name: '马红俊' },
{ value: 70, name: '奥斯卡' },
{ value: 80, name: '小舞' },
{ value: 120, name: '宁荣荣' },
{ value: 90, name: '朱竹清' },
];
Sample = PolarOption.CreatePolar(CommonFunction.clone(this.dataset), "75%");
ngOnInit(): void {
this.Sample.series[0].itemStyle.color = this.getColor;
this.Sample.series[0].itemStyle.opacity = 0.5;
this.Sample.series[0].emphasis.itemStyle.opacity = 1;
}
getColor(params) {
//定义一个颜色集合
var colorList = ChartColor.colorlist_7_Baidu;
//对每个bar显示一种颜色
return colorList[params.dataIndex]
}
}
OptionHelper
工具位置了一些有用的函数,例如可以通过简单的方法为图表添加一个VisualMap
/**
* 添加VisualMap
* @param option 需要添加的图表配置
* @param max VisualMap最大值
* @param colorlist inRange颜色列表
*/
public static chart_SetVisualMap(option: OptionBase, max: number, colorlist: string[]) {
OptionHelper.chart_SetVisualMap(this.Sample, 200, ChartColor.colorlist_VisualMapinRange);

上图的复杂3DBar的代码如下,非常简单,大部分代码是准备数据,以及Angular的代码,生成图表和添加VisualMap,调整细节代码就5行左右。
import { OnInit, Component } from '@angular/core';
import { Bar3D } from '../OptionCreator/Bar3D';
import { ChartComponent } from '../Chart/chart.component';
import { Chart3D } from '../OptionCreator/OptionBase';
import { OptionHelper } from '../OptionCreator/OptionHelper';
import { ChartColor } from '../OptionCreator/ChartColor';
@Component({
templateUrl: './bar3d_basic.component.html'
})
export class Bar3D_BasicComponent implements OnInit {
chartComp = ChartComponent;
title = '柱状图(3D)-基本';
categoryX = ['唐三', '戴沐白', "马红俊", "奥斯卡", "小舞", "宁荣荣", "朱竹清"];
categoryY = ['攻击', '防御', "生命", "魂力", "速度"];
Sample: Chart3D
ngOnInit(): void {
let dataset: number[][] = [];
for (let roleind = 0; roleind < this.categoryX.length; roleind++) {
for (let proidx = 0; proidx < this.categoryY.length; proidx++) {
dataset.push([roleind, proidx, Math.round(Math.random() * 100)])
}
}
this.Sample = Bar3D.CreateBar3D(this.categoryX, this.categoryY, "角色", "能力", "数值", dataset);
this.Sample.series[0].emphasis.label.formatter = this.LabelForPoint;
this.Sample.series[0].itemStyle.opacity = 0.5;
this.Sample.tooltip = null;
OptionHelper.chart_SetVisualMap(this.Sample, 100, ChartColor.colorlist_VisualMapinRange_More);
}
LabelForPoint(params: any) {
let categoryX = ['唐三', '戴沐白', "马红俊", "奥斯卡", "小舞", "宁荣荣", "朱竹清"];
let categoryY = ['攻击', '防御', "生命", "魂力", "速度"];
return "角色:" + categoryX[params.data[0]] + "" + "\n属性:" + categoryY[params.data[1]] + "\n数值:" + params.data[2];
};
}
Demo:http://datavisualization.club:8081/basic/bar
Github:https://github.com/magicdict/VisLab
代码持续更新中,以前几个获奖的可视化(天池,CCF)代码中好的设计也会整合到这个开源项目中。
对于大数据可视化感兴趣的,本人的公众号可以关注一下。
以后需要参加数据可视化比赛,可以组队。

[开源]eCharts配置简化包OptionCreator[typescript版]的更多相关文章
- [开源][示例更新]eCharts配置简化包OptionCreator[typescript版]
前言 eCharts作为国内优秀的开源图表工具,功能强大,但是使用中也存在一定的问题. 文档更新较慢,文档说明不详细. 前端使用的弱类型语言,数据结构在灵活的同时,也容易造成一些问题.例如某些属性到底 ...
- 配置算法(第4版)的Java编译环境
1. 下载 1.1 JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html选择“Windows x64 180.5 ...
- 转:基于开源项目OpenCV的人脸识别Demo版整理(不仅可以识别人脸,还可以识别眼睛鼻子嘴等)【模式识别中的翘楚】
文章来自于:http://blog.renren.com/share/246648717/8171467499 基于开源项目OpenCV的人脸识别Demo版整理(不仅可以识别人脸,还可以识别眼睛鼻子嘴 ...
- 在Eclipse下配置算法(第四版)运行环境
第一步:配置Eclipse运行环境 Eclipse运行环境配置过程是很简单的,用过Eclipse进行java开发或学习的同学应该都很熟悉这个过程了. 配置过程: (1)系统环境:Windows7 64 ...
- 三、Gradle初级教程——Gradle除了签名打包还能配置jar包
1.gradle概念 构建工具,Groovy,Java. 2.gradle配置jar包,和libs文件夹导入jar包的区别 到此,还是这种方法导入JAR包比较方便.每次更新JAR包,只需要修改版本号就 ...
- 【手把手学习flutter】Flutter打Android包的基本配置和包体积优化策略
[手把手学习flutter]Flutter打Android包的基本配置和包体积优化策略 关注「松宝写代码」,回复"加群" 加入我们一起学习,天天向上 前言 因为最近参加2020FE ...
- spring mvc和spring配置扫描包问题
spring mvc和spring俩配置文件,其中都要配置扫描包. <context:component-scan base-package="com.controller" ...
- Python基于Flask框架配置依赖包信息的项目迁移部署小技巧
一般在本机上完成基于Flask框架的代码编写后,如果有接口或者数据操作方面需求需要把代码部署到指定服务器上. 一般情况下,使用Flask框架开发者大多数都是选择Python虚拟环境来运行项目,不同的虚 ...
- 简单安装与配置mysql数据库(绿色版)
目录 绿色版下载 mysql绿色版(5.7版本的安装与配置) 绿色版下载: mysql官网下载地址:https://www.oracle.com/index.html mysql绿色版(5.7版本的安 ...
随机推荐
- 浅谈python中的赋值、浅拷贝与深拷贝:
1.赋值----------是对原对象的引用,指向同一片内存地址 浅拷贝和深拷贝对于容器类型对象才有意义 2.浅拷贝----------对于一个对象的顶层进行拷贝 浅拷贝有三种方式: (1)切片 (2 ...
- 实战记录之SQL server报错手工注入
前言 最近测试了一个站点,这个站点挺有意思,发现没有关闭错误提示,初步猜测是SQL server数据库,后来验证确实是.在这里记录一下实战过程,并详细讲解一下用到的知识点. SQL server报错注 ...
- elementUI+国际化
1. 先创建一个lang 文件夹,创建两个js文件en.js(英文), zh.js(中文), 另外创建一个index.js文件(用于) en.js zh.js (两者必须保持一致) 2. 在index ...
- 时间序列神器之争:prophet VS lstm
一.需求背景 我们福禄网络致力于为广大用户提供智能化充值服务,包括各类通信充值卡(比如移动.联通.电信的话费及流量充值).游戏类充值卡(比如王者荣耀.吃鸡类点券.AppleStore充值.Q币.斗鱼币 ...
- JS基础知识笔记
2020-04-15 JS基础知识笔记 // new Boolean()传入的值与if判断一样 var test=new Boolean(); console.log(test); // false ...
- [noi.ac省选模拟赛]第11场题解集合
题目 比赛界面. T1 比较简单.容易想到是求鱼竿的最大独立集.由于题目的鱼竿可以被分割为二分图,就可以想到最大匹配. 尝试建边之后会发现边的数量不小,但联系题目性质会发现对于一条鱼竿,它 ...
- 在CentOS下利用Docker一键安装seafile
https://cloud.seafile.com/published/seafile-manual-cn/docker/pro-edition/%E7%94%A8Docker%E9%83%A8%E7 ...
- unittest实现用例运行失败截图
把这个方法放到父类basecase(unittest.TestCase)就行了 #coding: utf-8 import unittest, random, os, traceback from s ...
- 一行代码让你的python运行速度提高100倍
转自:https://www.cnblogs.com/xihuineng/p/10630116.html 加上之后运行速度快了十倍,我的天呐. python一直被病垢运行速度太慢,但是实际上pytho ...
- SpringBoot + Mybatis + Redis 整合入门项目
这篇文章我决定一改以往的风格,以幽默风趣的故事博文来介绍如何整合 SpringBoot.Mybatis.Redis. 很久很久以前,森林里有一只可爱的小青蛙,他迈着沉重的步伐走向了找工作的道路,结果发 ...