对v-charts图表组件(基于VUE2.0和echarts封装)的补充说明

           可视化图表组件v-charts(https://v-charts.js.org/)是为了在vue中方便的使用echarts(https://echarts.apache.org/zh/),而对echarts进行裁剪封装后的vue组件,所以在vue中使用起来非常方便。


    然而在实际项目中,一些应用场景所需要的功能在v-charts文档中没有明确描述,但v-charts实际上是支持的,下面是我在实际项目中翻出的v-charts隐藏技能:

一、地图map

    1、地图数据本地化

    在v-charts中,地图数据实际上就是一堆json文件,每个国家、每个省份、每个地市、每个区县…都对应一个json文件,有了这个json文件就有了这个地区的地图数据。

   有三种方式指定地图数据:

     1)通过名称指定:chartSettings.position: 'china' 、chartSettings.position:'province/jiangsu'

     2)通过指定地图数据源:chartSettings.positionJsonLink:'https://unpkg.com/v-charts-custom-maps@0.2.1/hk-geo.json'

     3)通过绑定本地json文件:chartSettings.positionJsonLink:'statics/map/echarts/320000.geo.json'

       我倾向于采用第三种方式,好处有二:一是如果项目运行在外网,可以减少数据依赖,同时也会保障速度;二是项目同样可以运行在内网,因为地图数据都在本地。

       我在获取json文件的时候遇到一个:由于是用的echarts,所以第一反应是到https://hxkj.vip/demo/echartsMap/上下载地图数据,但这个网站的区县数据有问题,即同一个地市下的各个区县json数据都一样(下的时候没有注意,操作地图时才偶然发现这个问题)。所以建议到http://datav.aliyun.com/tools/atlas/下载地图数据,目前还未发现数据问题。

     2、地图上隐藏图例

    在组件上增加一句:legend-visible="false"即可,具体如下:

<ve-map :data="chartData" :settings="chartSettings" :events="chartEvents" :visual-map="visualMap" :legend-visible="false" height="450px"></ve-map>

     3、 地图的逐级钻取

     地图的逐级钻取本质上就是动态修改指向不同的json文件(地图数据文件),即修改chartSettings.positionJsonLink的值。当然这还不够,每次修改地图数据文件指向的同时,还必须修改chartSettings. position的值,否则地图不能刷新成新的地图。我是把chartSettings. position值设为当前地图的行政区划代码,这样可以确保和上一次的地图position不同。

      4、地图上热力图实现

      v-charts文档没有描述在map组件上如何实现热力图,而是通过一个单独的热力图组件实现,这显然不能满足在地图逐级钻取的同时展现热力图的应用场景要求。

       map组件上实现热力图,和常规的热力图有所差异:她是地图上每个地区一种颜色,不同地区由于指标值(metrics)不同,所以显示不同的颜色。在map组件上实现热力图需要如下两步:

       第一步,设置视觉映射组件,即visual-map="visualMap",具体如下

<ve-map :data="chartData" :settings="chartSettings" :events="chartEvents" :visual-map="visualMap" :legend-visible="false" height="450px"></ve-map>

        为了使用视觉映射组件,记得在VUE中:

import visualMap from"echarts/lib/component/visualMap";    //visualMap包含在v-charts中,所以无需单独安装

       同时需要配置视觉映射组件的参数值,尤其是min、max,我的配置如下:

visualMap: {
    type: 'piecewise',        //piecewise分段模式、continuous连续模式
    splitNumber: 8,          //分段的数量,piecewise模式下有效
    min: 800,                    //最小值,应小于地图上所有地区的指标值
     max: 50000,              //最大值,应大于地图上所有地区的指标值
      text: ['最多', '最少'],    //piecewise模式下,有此参数则不显示每段旁边的label,否则就显示label;continuous模式下必须要此参数
       realtime: false,
       calculable: true,
        inRange: { color: ['white', 'yellow', 'orangered'] } },

    第二步,指定指标列(metrics),建议只指定一个指标,因为如果有多个指标,则每个地区的颜色具体依据哪个指标值就会比较乱。

二、仪表盘gauge

    1、容器的尺寸

     在组件中如果未指定容器尺寸,则仪盘表的容器是整个组件放置区域;如果组件中指定了尺寸,则容器大小就为指定尺寸,如下配置就是指定容器的高度为160px,长度为当前区域的100%:

2、仪表盘的位置

      每个仪表盘的默认位置均是chartSettings_gauge.seriesMap.center:['50%', '50%'],即仪表盘的圆心为当前容器的中心点,由于是默认值,所以一般仪表盘的chartSettings中都不配置center:['50%', '50%']。但在如下两种情况下,需要配置center值:

      第一种情况,有多个仪表盘,显然每个仪表盘的中心点位置不同,所以必须配置center值。

      第二种情况,需要调整仪表盘在容器中的位置,例如我在这个项目中就把中心点调整为center: ['50%', '60%'],原因是仪表盘的下面缺少了一部分,要把这个表盘放在图形中间,就需要下移表盘中心点位置。

    3、仪表盘的大小

       仪表盘的大小是由仪表盘的半径决定的,即chartSettings_gauge.seriesMap.radius: '50%',在v-charts的文档示例中,半径都是采用百分比,这样做大的好处是随着容器大小的变化,则仪表盘的大小也跟着变化,但缺点也是明显的,可能导致整个画面效果变乱。

        所以一般我都喜欢设定为一个固定值,具体值的大小自行根据容器位置和屏幕大小调整确定。

     4、关于指针

       chartSettings_gauge.seriesMap中的三个参数min、max、splitNumber决定了表盘刻度和当前指针指向的位置,所以需要根据指标值(metrics)定义好min、max、splitNumber的值,否则就会出现指针指向有问题,或者表盘刻度不合理。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,219评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,363评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,933评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,020评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,400评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,640评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,896评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,597评论 0 199
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,327评论 1 244
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,581评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,072评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,399评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,054评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,083评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,849评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,672评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,585评论 2 270