缘起
ECharts,缩写来自Enterprise Charts,商业级数据图表,它最初是为了满足公司商业体系里各种业务系统(如凤巢、广告管家等等)的报表需求。以前这些系统的图表需求我们都是使用flash去实现的,百度分工很细,有专门的flash组同学去做这个事情,这就不可避免多了一个沟通环节,作为前端工程师无法独立掌控,不管是数据接口的设计,个性化的需求都得沟通商定。而且一个系统内会有很多个flash在不同场景下出现,他们并没有实现通用。加上乔帮主不让i系列上运行flash以及html5的火热,我们需要寻求一个解决方案。于是在2012年初,当时还是凤巢前端技术负责人的Kener-林峰在凤巢数据平台项目中尝试使用Canvas去做图表,他写了一个全新的轻量级Canvas类库ZRender,那可以说是ECharts的原型,虽然跟现在已经相去十万八千里了。
百度资深前端Erik回归后组建起了百度商业前端通用技术组,在前面提到的背景下加上前端团队的经理祖明的强力支持,数据可视化成为了通用技术里一个重要的研究方向, 林峰也就这样顺理成章的从凤巢技术负责人转到现在的角色,百度商业前端数据可视化团队负责人。痴狂于web3d的技术天才沈毅,沉迷图形图像的杨骥,有SVG/GUI实战经验的宿爽,对颜色如数家珍的陈怀木等等来自一线的工程师加入组建起了可视化团队。
正如前面提到的,ECharts来自ZRender,那时的ZRender是包含图表功能的,甚至拖拽重计算已经在那个时候被实现了,但各种图表数据逻辑与图形渲染耦合,非模块化,Demo时随心所欲的特殊定制,我们意识到这是一个糟糕的设计。ZRender做了第一次大规模的重构,抽离了一切图表相关功能,纯粹的作为底层Canvas类库使用。
而被抽离的图表逻辑构建成为ECharts 0.1版本, 但基本仍旧属于Demo状态,因为接口不规范,个性化能力和通用性都太差了。Erik和林峰,以及3位来自Flash组的资深工程师(百度商业系统中多年 来所做的各种flash图表基本出自他们或者是他们所带领的团队),花了近2个月时间先后开了6次会议终于制定并发布了百度图表库标准1.0版本。这份标准是在几乎没考虑实现成本的情况下制定的,追求设计的合理、高度个性化的扩展能力,可想而知,这是给团队挖了一个很深很深的坑,在紧接着的近10个月时间里ECharts团队就是看着文档一步一步从这个坑里爬出来。
幸运的是我们真爬出来了,2013年6月30,ECharts发布了1.0版本,这份标准完全成为了ECharts 1.0的API文档,而且我们还加入了更多的数据交互能力。虽然这份标准目前已经成为了ECharts文档的子集了,但它的重要性不容置疑,回过头看这段历程,我们衷心的感谢制定这份标准的5位工程师(林峰、赵庶、Erik、刘阳、杨冬),在我们看来接口设计的合理比起实现成本重要得多。
发展
ECharts缘起公司自身的业务需求,但开源使得它得以发展,虽然业界已经有多如牛毛的JS图表库,但ECharts带着颠覆性的功能设计和技术 特征,发布后得到了业界高度关注和好评,迅速成为国内数据可视化领域的“后起之秀”,先后在CSDN、ITEye、InfoQ、中国统计网、统计之都等主 流技术媒体上有专题报道,被开源中国收录后即被列为精选做了长达一周的首页首位推荐,收藏数超过了1000,github上发布12个月后star数超过 了1900,已经成为了国内同类别项目中关注度最高的开源项目。被百度外100多家企业应用在新闻传媒、证券金融、电子商务、旅游酒店、天气地理、视频游戏、电力等众多领域。
令我们意外的是,ECharts仅发布半年入选成为了“2013年国产开源软件10大年度热门项目”,同时在“2013年度最新的20大热门开源软件” 中排名第一。除此之外,ECharts还得到了跨领域以及国外技术团体关注,如在R领域就同时出现国内外多个版本的扩展,听说还有两家亚太地区金融咨询企 业正在研发基于ECharts的BI类产品,甚至还有人拿着ECharts跑到纽约市长数据分析部门做应用推广。这都是我们的意外收获,感谢大家的支持。
下面是ECharts部分图表展示: