v-charts
Echarts是百度提供的一个用于在web端快速绘制图表的工具,它是通过js在canvas中进行图表的绘制,所以只要你的项目能够支持js,那就可以使用echarts。
Echarts有着丰富且详细的文档,可以让我们去定制自己喜欢的图表样式。但是这篇博客主要讲的是如何在vue项目中使用v-charts。
v-charts是对echarts的有一次封装,在保留了echart原有的所有设置的同时,可以让我们的代码风格更加接近vue,而不是像原生echarts一样完全是js代码。
但是在使用过程中我却遇到了一些问题,主要还是因为v-charts的文档有些模糊,这里记录一下遇到的问题。
首先给出二者的文档
三点配置项使用总述
对于v-charts的文档,我最疑惑的地方就是它是如何将echart中那么多的配置项结合起来的。在v-chart的文档的图表属性一节中只是简单地说明了它封装过的几个属性,其他所有的属性都是一笔带过,说我们可以去看echarts的文档,但是如何设置它没有封装的属性却没有说清楚,这里总结一下。
属性
所有图表都具有的属性,例如 width
, events
等。
1 | <ve-line :data="chartData" width="100px" :events="chartEvents"></ve-line> |
基本属性
配置项 | 简介 | 类型 | 默认值 |
---|---|---|---|
data | 数据,参考文档 | object | - |
settings | 配置项 | object | - |
width | 宽度 | string | auto |
height | 高度 | string | 400px |
events | 事件绑定,参考文档 | object | - |
init-options | init 附加参数,参考文档 | object | - |
tooltip-visible | 是否显示提示框 | boolean | true |
legend-visible | 是否显示图例 | boolean | true |
theme | 自定义主题 | object | - |
theme-name | 自定义主题名称 | string | - |
judge-width | 是否处理生成图表时的宽度问题 | boolean | false |
width-change-delay | 容器宽度变化的延迟 | number | 300 |
resizeable | 是否处理窗口 resize 事件 | boolean | true |
cancel-resize-check | 是否禁用 resize 时的容器检测 | boolean | false |
resize-delay | 窗口 resize 事件回调的延迟 | number | 200 |
change-delay | 属性修改触发图表重绘回调的延迟 | number | 0 |
set-option-opts | echarts setOption 的第二个参数, 参考文档 | boolean object | true |
not-set-unchange | 未发生变化时不参加 setOption 的属性 | array | - |
log | 在控制台打印内部生成的echarts options | boolean | false |
上面这些内容来自v-charts的文档,意思是这些属性都可以直接在组件上通过vue特有的双向绑定的方法进行设置。
需要注意的一点事,setting中具体可以设置什么内容也是v-charts封装好的,需要去查v-charts文档中对应的每个类型的图表,才能知道这种类型的图表可以设置什么属性。
extend 属性
为了能够更方便的设置属性配置项等,可以通过extend属性实现对已配置好的内部属性进行单独的设置, extend为对象类型,对象内的属性可以是函数,也可以对象,也可以是其他类型的值
- 当属性为函数时,设置的是函数的返回值
- 当属性为对象时,如果在options中对应的属性为对象(eg: tooltip)或包含对象的数组(eg: series), 对应的配置会被合并,否则将直接覆盖对应的配置
具体使用方法可以参考属性配置示例
echarts options 属性
与echarts配置项对应的属性也被加到了组件上,用于直接覆盖options原有的对应属性,使用方式可参考文档
1 | grid: [object, array], |
如果某属性加上去之后没有生效,很可能是没有引入相应的模块,模块的位置可以参考此文件
这两部分的文档会给我们产生一个误导,就是我们可以给chart组件绑定一个extend,以及一个options,但其实不是这样的,这两部分中提到的所有属性都是通过“:extend”进行绑定的,如:
1 | <ve-line :extend="extend"></ve-line> |
最后一点,也是隐藏的最深的一点,在echarts的文档中,有的属性既不是extend,也没有写在v-charts的setting文档中,这些就是echarts文档中series中规定的属性,比如折线图,echarts中有的属性是规定在这里,这些属性也是可以通过设置在settings.series中生效的。
几个例子
这里只展示两个在v-charts文档中无法直接找到的设置的例子,可以设置折线图的分割线样式,填充面样式以及柱状图的颜色渐变样式,熟练之后,结合v-charts,echarts的文档可以很快地配置各种属性。
line
1 | lineChartSetting: { |
histogram
1 | this.chartSettings = { |