Bootstrap

V-Charts的基本使用

目录

安装

导入方式

1.全局导入

2.按需导入

图表组件

基本使用

出现浏览器控制台map报错

基本属性

evnets属性

init-options

tooltip-visible

legend-visible

theme主题

width-change-delay

resizeable

log

Setting属性设置 

绑定配置属性

axisSite

area

min和max

xAxisType

时间轴

yAxisType

yAxiName

Stack

digit

legendName

labelMap

柱状图

stack属性

饼图

地图



安装

pnpm add v-charts [email protected] -S

导入方式

1.全局导入

mian.js中全局导入,并注册使用

import Vue from 'vue'
// 全局导入V-Charts
import VCharts from 'v-charts'
import App from './App.vue'

Vue.use(VCharts)

new Vue({
  el: '#app',
  render: h => h(App)
})

2.按需导入

<template>
    <div>
        <vue-line></vue-line>
    </div>
</template>
<script>
import VueLine from "v-charts/lib/line.common.js";
export default {
       components: {
        VueLine
    },
}
}
</script>

图表组件

- lib /

| - line.common.js  ----------- 折线图
| - bar.common.js  ----------- 条形图
| - histogram.common.js  ----------- 柱状图
| - pie.common.js  ----------- 饼图
| - ring.common.js  ----------- 环图
| - funnel.common.js  ----------- 漏斗图
| - waterfall.common.js  ----------- 瀑布图
| - radar.common.js  ----------- 雷达图
| - map.common.js  ----------- 地图
| - sankey.common.js  ----------- 桑基图
| - heatmap.common.js  ----------- 热力图
| - scatter.common.js  ----------- 散点图
| - candle.common.js  ----------- k线图
| - gauge.common.js  ----------- 仪表盘图
| - tree.common.js  ----------- 树图
| - bmap.common.js  ----------- 百度图
| - amap.common.js  ----------- 高德图

基本使用

<template>
    <div>
        <vue-line></vue-line>
    </div>
</template>
<script>
import VueLine from "v-charts/lib/line.common.js";
export default {
     data() {
        return {
            chartData: {
                columns: ['日期', '访问用户', '下单用户'],
                rows: [
                    { '日期': '2018-05-22', '访问用户': 32371, '下单用户': 19810 },
                    { '日期': '2018-05-23', '访问用户': 12328, '下单用户': 4398 },
                    { '日期': '2018-05-24', '访问用户': 92381, '下单用户': 52910 }
                ]
            }
        }
    },
       components: {
        VueLine
    },
}
}
</script>

出现浏览器控制台map报错

main.js中写入

//v-charts组件出现(undefined (reading ‘map‘)bug解决方案
Vue._watchers = Vue.prototype._watchers = []; 

基本属性

配置项简介类型默认值
data数据,参考文档object-
settings配置项object-
width宽度stringauto
height高度string400px
events事件绑定,参考文档object-
init-optionsinit 附加参数,参考文档object-
tooltip-visible是否显示提示框booleantrue
legend-visible是否显示图例booleantrue
axis-visible是否显示坐标轴booleantrue
theme自定义主题object-
theme-name自定义主题名称object-
judge-width是否处理生成图表时的宽度问题booleanfalse
width-change-delay容器宽度变化的延迟number300
resizeable是否处理窗口 resize 事件booleantrue
resize-delay窗口 resize 事件回调的延迟number200
change-delay属性修改触发图表重绘回调的延迟number0
handler处理器object-
use-data-converter是否使用数据转化函数booleanfalse

evnets属性

 <vue-line 
           :data="chartData" 
           :events="chartEvents"
 ></vue-line>
 data() {
        return {
            ........
            chartEvents:{
            //点击事件获取节点数据
            click(e){
                console.log(e);
            },
            //移动事件获取节点数据
            mousemove(e){
                console.log(e);
            }
           } 
             .........
        }
}

init-options

将图表格式转化为svg,默认事canvas格式

<vue-line 
           :init-options="{'renderer': 'svg'}" 
></vue-line>

tooltip-visible

图标节点上的提示框 ,默认显示提示框(true)

关闭提示框 
<vue-line :tooltip-visible="false" ></vue-line>

legend-visible

图例显示 ,默认显示(true)

关闭图例显示
<vue-line :legend-visible="false" ></vue-line>

theme主题

自定义图表颜色主题

可以参考主题编辑器 - Apache ECharts自定义配置并导入

  <vue-line :theme="theme" ></vue-line>
  theme:{
    color: [
            "#dcdfd9",
            "#22ee88",
            "#244de7",
            "#2a3bbc",
            "#74be74",
            "#96dee8"
        ],
            }

width-change-delay

容器宽度变化的延迟

<vue-line :width-change-delay="3000" ></vue-line>

resizeable

控制表图响应式宽度变化 默认为响应式 (true)

//关闭宽度响应式
<vue-line :resizeable="false" ></vue-line>

log

打印表图数据

<vue-line log ></vue-line>

Setting属性设置 

dimension维度stringcolumns[0]-
metrics指标array(columns exclude dimension)-
extraMetrics只显示在提示框的指标array--
axisSite指标所在的轴object--
xAxisType横轴的数据类型stringcategorycategory time value
xAxisName横坐标轴标题string--
yAxisType左右坐标轴数据类型array--
yAxisName左右坐标轴标题array--
metricsType数据类型object--
stack堆叠选项object--
area是否展示为面积图booleanfalse-
scale是否是脱离 0 值比例array[false, false]-
min左右坐标轴最小值array--
max左右坐标轴最大值array--
labelAlias设置指标的别名,同时作用于提示框和图例object--
legendAlias设置图表上方图例的别名object--

绑定配置属性

  <vue-line :settings="chartSettings"></vue-line>
 data(){
     //设置Setting配置
             chartSettings:{}
 }

axisSite

设置y轴左侧右侧展示的数据

默认情况:只会展示左侧数据,右侧不会展示

 data(){
     //设置Setting配置
             chartSettings:{
                  axisSite:{
                     right:['比率'],
                     left:['余额']
                 }
             }
 }

area

默认事false,折现底部不填充

 data(){
     //设置Setting配置
             chartSettings:{
                     //设置右轴
                  axisSite:{
                     right:['比率'],
                     left:['余额']
                 },
                     //设置面积显示
                   area:true
             }
 }

min和max

都是Array类型,第一个参数都是左侧最小,第二个参数都是最大值

 //设置Setting配置
            chartSettings:{
                axisSite:{
                    right:['比率']
                },
                area:true,
                //设置y轴两侧最小值
                min:[100,0],
                //设置y轴两侧最大值
                max:[10000,1]
            }
        }

xAxisType

设置x轴的数据类型

'value':数值轴,适用于连续数据

category:默认类型,适用于离散的类目数据

time:时间轴,适用于连续的时序数据

log:对数轴。适用于对数数据

数值轴

<vue-line :data=' chartData' :settings="chartSettings"></vue-line>
  //定义数据
            chartData: {
                //默认第一个值为x轴,其他都为y轴值
                columns: ['日期', '余额', '比率','利润'],
                rows: [
                    { '日期': 111, '余额': 3237, '比率': 0.2 ,'利润':2000},
                    { '日期': 222, '余额': 1232, '比率': 0.6 ,'利润':6000},
                    { '日期': 333, '余额': 9238, '比率': 0.5 ,'利润':5000}
                ]
            },
    //设置Setting配置
            chartSettings:{
                xAxisType:'value'
            }
        }

时间轴

<vue-line :data=' chartData' :settings="chartSettings"></vue-line>
//定义数据
            chartData: {
                //默认第一个值为x轴,其他都为y轴值
                columns: ['日期', '余额', '比率','利润'],
              rows: [
                    { '日期': '2018-05-22', '余额': 3237, '比率': 0.2 ,'利润':2000},
                    { '日期': '2018-05-23', '余额': 1232, '比率': 0.6 ,'利润':6000},
                    { '日期': '2018-05-24', '余额': 9238, '比率': 0.5 ,'利润':5000}
                ]
            },
   //设置Setting配置
            chartSettings:{
                xAxisType:'time'
            }
        }

yAxisType

可选值:KMB,normal,percent

默认值normal,就是rows中的正常展示的数据

KMB会把大于千的数据转换为k单位

percent会将数据转换为百分比

      chartSettings:{
                  // 设置y轴两侧的数值类型 
                yAxisType:['KMB','percent']
            }
        }

yAxiName

  • 设置y轴两侧的名称
  • 第一个参数是y轴左侧名称
  • 第二个参数是y轴右侧名称
  • percent会将数据转换为百分比

  chartSettings:{
                  // 设置y轴两侧的名称
                yAxisName:['余额','比例']
            }
        }

Stack

不适于折线图

 chartSettings:{
               stack:{
                   '用户':['余额','比率']
               }
        }

digit

保留小数后几位

//定义数据
            chartData: {
                //默认第一个值为x轴,其他都为y轴值
                columns: ['日期', '余额', '比率','利润'],
                rows: [
                    { '日期': '2018-05-22', '余额': 3237, '比率': 0.22222 ,'利润':2000},
                    { '日期': '2018-05-23', '余额': 1232, '比率': 0.6333 ,'利润':6000},
                    { '日期': '2018-05-24', '余额': 9238, '比率': 0.5553 ,'利润':5000}
                ]
            }, 
chartSettings:{
       // 保留小数后几位
               digit:2
        }

legendName

修改图例名称 ,不修改提示框的名称

chartSettings:{
       //修改图例名称
              legendName:{
                  '余额':'1111',
                      '比率':'2222',
                            '利润':'3333'
              }
        }

labelMap

同时修改图例名称和提示名称

chartSettings:{
       //修改图例和提示名称
             labelMap:{
                  '余额':'1111',
                      '比率':'2222',  '利润':'3333'
              }
        }

柱状图(由上面折线图演变来的 )

<template>
    <div>
        <vue-line :data="chartData" :settings="chartSettings" ></vue-line>
    </div>
</template>
import VueLine from "v-charts/lib/histogram.common.js";
  data() {
        return {
            //定义数据
            chartData: {
                //默认第一个值为x轴,其他都为y轴值
                columns: ['日期', '余额', '比率', '利润'],
                rows: [
                    { '日期': '2018-05-22', '余额': 3237, '比率': 0.22222, '利润': 2000 },
                    { '日期': '2018-05-23', '余额': 1232, '比率': 0.6333, '利润': 6000 },
                    { '日期': '2018-05-24', '余额': 9238, '比率': 0.5553, '利润': 5000 }
                ]
            },
        }
  }

stack属性

堆叠面积

 chartSettings: {
         stack: {
                    '用户': ['余额', '利润']
                }
   }

最基本的柱形图

1.基本使用

<template>
    <div>
        <vue-line :data="chartData"></vue-line>
    </div>
</template>
import VueLine from "v-charts/lib/histogram.common.js";
  data() {
        return {
            //定义数据
           chartData: {
                //默认第一个值为x轴,其他都为y轴值
                columns: ['日期', '余额'],
                rows: [
                    { '日期': '2018-05-22', '余额': 3237 },
                    { '日期': '2018-05-23', '余额': 1232 },
                    { '日期': '2018-05-24', '余额': 9238 }
                ]
            },
        }
  }

完整版的柱形图

设置了extend属性

设置了settings属性

<vue-line :data="chartData" :extend="extend" :settings="chartSet" ></vue-line>
 data() {
        return {
            //定义数据
            chartData: {
                //默认第一个值为x轴,其他都为y轴值
                columns: ['日期', '余额'],
                rows: [
                    { '日期': '2018-05-22', '余额': 3237 },
                    { '日期': '2018-05-23', '余额': 1232 },                 
                    { '日期': '2018-05-24', '余额': 9238 }
                ]
            },
            //设置图标的状态
          extend: {
                // y轴只显示一条线,x轴文字倾斜
                "xAxis.0.axisLabel.rotate": 45,
                 yAxis: {
                     //是否显示y轴线条
                     axisLine: {
                          show: true,
                     },
                     // 纵坐标网格线设置,同理横坐标
                     // splitLine: {
                         // show: false,
                     // },
                     // 线条位置
                     position: "left",
                 },
                //文字竖直显示
                 xAxis: {
                     axisLabel: {
                         interval: 0,
                         formatter: function (value) {
                            return value.split("").join("\n");
                         },
                     },
                 },
                //对于大量数据,设置滚动条显示
                dataZoom: [
                    {
                        show: true,
                        realtime: true,
                        start: 0,
                        end: 50,
                    },
                    {
                        type: "inside",
                        realtime: true,
                        start: 0,
                        end: 50,
                    },
                ],
             // label图形上的文本标签
                series: {
                    label: { show: true, position: "top" },
                },
            },
             // 修改别名:同时修改图标与提示名称
              chartSet: {
                labelMap: {
                    余额: "金额",
                },
            },
        }
  }

extend属性

<vue-line :data="chartData" :extend="extend" ></vue-line>

xAxis.0.axisLabel.rotate

x轴文字倾斜 范围[0-90]

 extend: {
      "xAxis.0.axisLabel.rotate": 45
  }

yAxis(y轴设置)

axisLine

是否显示y轴

extend: {
   yAxis: {
    //是否显示y轴线条
    axisLine: {
       show: true,
          }
        }
  }
splitLine

纵坐标网格线设置,同理横坐标

extend: {
   yAxis: {
    //是否显示网格
     splitLine: {
                         show: false,
                     },
  }
position(需要先开启axisLine)

y轴线条位置显示

extend: {
   yAxis: {
       //是否显示y轴线条
         axisLine: {
            show: true,
                    },
       // 线条位置                
             position: "left",
  }

 

extend: {
   yAxis: {
       //是否显示y轴线条
         axisLine: {
            show: true,
                    },
       // 线条位置                
             position: "right",
  }

xAxis

文字竖直显示

extend: {
   xAxis: {
        axisLabel: {
              interval: 0,
              formatter: function (value) {
              return value.split("").join("\n");
               },
          },
      },
  }

series

设置柱形图上的数据文本

series: {
           label: { show: true, position: "top" },        
},

dataZoom

设置大量数据,设置滚动条

  //对于大量数据,设置滚动条显示
                dataZoom: [
                    {
                        show: true,
                        realtime: true,
                        start: 0,
                        end: 50,
                    },
                    {
                        type: "inside",
                        realtime: true,
                        start: 0,
                        end: 50,
                    },
                ],

settings

设置配置,可改图例名称

<vue-line:data="chartData" :extend="extend" :settings="chartSet"></vue-line>
data(){
    return {
        extend:{},
        chartSet: {
                // // 修改别名:同时修改图标与提示名称
                 labelMap: {
                     余额: "金额",
                 },
            },
    }
}

饼图

<template>
    <div>
        <vue-line :data="chartData" :settings="chartSettings" ></vue-line>
    </div>
</template>
<script>
import VueLine from "v-charts/lib/pie.common.js";
export default {
    components: {
        VueLine
    },
    data() {
        return {
            //定义数据
            chartData: {
                //默认第一个值为x轴,其他都为y轴值
                columns: ['品种', '余额'],
                rows: [
                    { '品种': '苹果', '余额': 3237 },
                    { '品种': '莉子', '余额': 1232 },
                    { '品种': '香蕉', '余额': 9238 }
                ]
            },
        }
    }
}

地图

 <ve-map :data="chartData"></ve-map>

<script>
import Vemap from "v-charts/lib/map.common.js";
export default {
    components: {
        Vemap
    },
  data() {
    return {
      chartData: {
        columns: ['位置', '税收', '人口', '面积'],
        rows: [
          { '位置': '吉林', '税收': 123, '人口': 123, '面积': 92134 },
          { '位置': '北京', '税收': 1223, '人口': 2123, '面积': 29234 },
          { '位置': '上海', '税收': 2123, '人口': 1243, '面积': 94234 },
          { '位置': '浙江', '税收': 4123, '人口': 5123, '面积': 29234 }
        ]
      }
    };
  }
};
</script>

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;