最近工作中需要用到echarts,由于项目是用的vue-cli开发的。在网上搜到vue中合成了vue-echarts,但是不想使用vue中规定好的数据格式,于是就自己做了一个vue项目引用原生echarts的简单demo,实现过程如下:用了两种实现方式

准备工作

1、安装echarts依赖

控制台输入:npm install echarts --save

2、全局引入

main.js中引入

import echarts from 'echarts'

Vue.prototype.$echarts = echarts

创建图表

第一种创建方式

在一个.vue文件中引入多张图表

创建WelcomePage.vue

第一种在vue中使用echart的方式

// 引入基本模板,按需加载

let echarts = require('echarts/lib/echarts');

// 引入柱状图

require('echarts/lib/chart/bar');

// 引入柱状图

require('echarts/lib/chart/pie');

require('echarts/lib/component/tooltip');

require('echarts/lib/component/title');

export default {

name: "WelcomePage",

data () {

return { }

},

mounted(){

this.drawBar();

this.drawPie();

},

methods:{

drawBar(){

// 基于dom,初始化echarts实例

let barGraph = echarts.init(document.getElementById('barGraph'));

// 绘制图表

barGraph.setOption({

title: {

text: '全年产量趋势图',

left: 'center'

},

tooltip: {

trigger: 'item',

formatter: '{a}
{b} : {c}'

},

legend: {

left: 'center',

data: ['本年', '上年'],

bottom:0

},

xAxis: {

type: 'category',

name: 'x',

splitLine: {show: false},

data: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月']

},

grid: {

left: '1%',

right: '2%',

bottom: '8%',

containLabel: true

},

yAxis: {

type: 'category',

name: 'y',

splitLine: {show: true},

data:['10%','20%','30%','40%','50%','60%','70%','80%','90%','100%']

},

series: [

{

name: '本年',

type: 'line',

data: [0.8, 0.98, 0.96, 0.27, 0.81, 0.47, 0.74, 0.23, .69, 0.25, 0.36, 0.56]

},

{

name: '上年',

type: 'line',

data: [1, 0.2, 0.4, 0.8, 0.16, 0.32, 0.64, 1.28, 5.6, 0.25, 0.63, 0.65, 0.12]

},

]

})

},

drawPie(){

let pieGraph = echarts.init(document.getElementById('pieGraph'));

pieGraph.setOption({

title : {

text: '某站点用户访问来源',

subtext: '纯属虚构',

x:'center'

},

tooltip : {

trigger: 'item',

formatter: "{a}
{b} : {c} ({d}%)"

},

legend: {

orient: 'vertical',

left: 'left',

data: ['直接访问','邮件营销','联盟广告','视频广告','搜索引擎']

},

series : [

{

name: '访问来源',

type: 'pie',

radius : '55%',

center: ['50%', '60%'],

data:[

{value:335, name:'直接访问'},

{value:310, name:'邮件营销'},

{value:234, name:'联盟广告'},

{value:135, name:'视频广告'},

{value:1548, name:'搜索引擎'}

],

itemStyle: {

emphasis: {

shadowBlur: 10,

shadowOffsetX: 0,

shadowColor: 'rgba(0, 0, 0, 0.5)'

}

}

}

]

})

}

}

}

实现效果如下图:

第二种实现方式(以组件的形式)

创建父组件 father.vue

{{ msg }}

第二种方式:通过组件的方式进行页面渲染

// 引入两个子组件

import BarGraph from "./bargraph";

import PieGraph from "./piegraph";

export default {

name: "father",

components:{

BarGraph,

PieGraph,

},

data(){

return{

msg: '我是爸爸,想看我的儿子,眼睛请往下移',

}

}

}

创建子组件barGraph.vue

{{ msg }}

let echarts = require('echarts/lib/echarts');

// 引入柱状图

require('echarts/lib/chart/bar');

require('echarts/lib/component/tooltip');

require('echarts/lib/component/title');

// import echarts from 'echarts'

export default {

name: "bargraph",

// props:['id'], // 第一种接收父亲传过来的值的方式

props: {

id: {

type: String,

default: 'chart'

}

},

data(){

return {

msg: "我是第一个子组件--bar",

chart: null,

}

},

mounted(){

this.drawBar();

},

methods:{

drawBar(){

this.chart = echarts.init(document.getElementById(this.id));

let colors = ['#5793f3', '#d14a61', '#675bba'];

this.chart.setOption(

{

color: colors,

tooltip: {

trigger: 'axis',

axisPointer: {

type: 'cross'

}

},

grid: {

right: '20%'

},

toolbox: {

feature: {

dataView: {show: true, readOnly: false},

restore: {show: true},

saveAsImage: {show: true}

}

},

legend: {

data:['蒸发量','降水量','平均温度']

},

xAxis: [

{

type: 'category',

axisTick: {

alignWithLabel: true

},

data: ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']

}

],

yAxis: [

{

type: 'value',

name: '蒸发量',

min: 0,

max: 250,

position: 'right',

axisLine: {

lineStyle: {

color: colors[0]

}

},

axisLabel: {

formatter: '{value} ml'

}

},

{

type: 'value',

name: '降水量',

min: 0,

max: 250,

position: 'right',

offset: 80,

axisLine: {

lineStyle: {

color: colors[1]

}

},

axisLabel: {

formatter: '{value} ml'

}

},

{

type: 'value',

name: '温度',

min: 0,

max: 25,

position: 'left',

axisLine: {

lineStyle: {

color: colors[2]

}

},

axisLabel: {

formatter: '{value} °C'

}

}

],

series: [

{

name:'蒸发量',

type:'bar',

data:[2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]

},

{

name:'降水量',

type:'bar',

yAxisIndex: 1,

data:[2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]

},

{

name:'平均温度',

type:'line',

yAxisIndex: 2,

data:[2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2]

}

]

}

)

}

}

}

创建pieGraph.vue

{{ msg }}

import echarts from 'echarts'

export default {

name: "piegraph",

props:{

id: {

type: String,

default: 'pieChart'

}

},

data(){

return{

msg: '我是第二个子组件--pie',

pieChart: null

}

},

mounted(){

this.drawPie();

},

methods: {

drawPie () {

this.pieChart = echarts.init(document.getElementById(this.id));

this.pieChart.setOption(

{

title : {

text: '某站点用户访问来源',

subtext: '纯属虚构',

x:'center'

},

tooltip : {

trigger: 'item',

formatter: "{a}
{b} : {c} ({d}%)"

},

legend: {

orient: 'vertical',

left: 'left',

data: ['直接访问','邮件营销','联盟广告','视频广告','搜索引擎']

},

series : [

{

name: '访问来源',

type: 'pie',

radius : '55%',

center: ['50%', '60%'],

data:[

{value:335, name:'直接访问'},

{value:310, name:'邮件营销'},

{value:234, name:'联盟广告'},

{value:135, name:'视频广告'},

{value:1548, name:'搜索引擎'}

],

itemStyle: {

emphasis: {

shadowBlur: 10,

shadowOffsetX: 0,

shadowColor: 'rgba(0, 0, 0, 0.5)'

}

}

}

]

}

)

}

}

}

效果实现如下:

路由文件如下:

import WelcomePage from '@/components/WelcomePage'

import Father from '@/components/father'

import BarGraph from '@/components/bargraph'

import PieGraph from '@/components/piegraph'

export default new Router({

routes: [

{

path: '/',

name: 'WelcomePage',

component: WelcomePage

},

{

path: '/father',

name: 'father',

component: Father,

children:[

{

path: '/bargraph',

name: 'bargraph',

component: BarGraph

},

{

path: '/piegraph',

name: 'piegraph',

component: PieGraph

}

]

},

]

})

在vue文件引入echarts_vue文件中使用echarts.js的两种方式相关推荐

  1. 指针数组下标JAVA_Java语言中可用下标和指针两种方式表示数组元素。

    [判断题]一行可以写多条预处理命令 [判断题]如果一个java程序中有多个类,编译后只生成一个字节码文件,其名字同主类名一致. [判断题]Protected类型的实例变量只能在本类中使用,其他类中不可 ...

  2. html中获取modelandview中的json数据_从Bitmap中获取YUV数据的两种方式

    从Bitmap中我们能获取到的是RGB颜色分量,当需要获取YUV数据的时候,则需要先提取R,G,B分量的值,然后将RGB转化为YUV(根据具体的YUV的排列格式做相应的Y,U,V分量的排列) 所以这篇 ...

  3. TCP中recv解阻塞的两种方式

    TCP中recv解阻塞的两种方式 1.收到客户端发送的数据 2.客户端关闭了套接字,可以通过判断收到数据的长度来判断客户端是否下线,长度为0代表已下线. send操作 1.在阻塞模式下send操作将会 ...

  4. Java中线程的创建有两种方式

    Java中继承thread类与实现Runnable接口的区别 Java中线程的创建有两种方式: 1.  通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2.  通过 ...

  5. spring中AOP动态代理的两种方式

    AOP动态代理的两种方式 Spring AOP动态代理的方式(spring的AOP默认是JDK Proxy) 浅谈这两种动态代理 JDK的动态代理,需要有实现接口 动态代理--JDK Proxy ⚫ ...

  6. Spring中进行事务管理的两种方式

    1.Spring中事务管理的API 事务是指逻辑上要么全部成功.要么全部失败的一组操作.例如用户A给用户B转账,则用户A账户余额减少.用户B账户增加这两个操作就是一组事务,必须全部成功或失败撤回操作, ...

  7. 关于虚拟机中对象访问定位的两种方式的一些思考

    前言 本文是在周志明老师经典作品<深入理解Java虚拟机>第二章第三节的基础上对句柄和直接指针两种对象访问方式的深入思考,有不准确的地方希望读者不吝赐教. JVM中访问对象的两种方式 1. ...

  8. IDEA中打jar包的两种方式

    在讲这两种方式之前,我们先来说明一下什么是java中的jar文件 jar (Java Archive File),翻译过来就是java的档案文件,它其实也类似于我们windows下的zip文件,唯一的 ...

  9. Unity中制作自定义字体的两种方式

    Unity支持自定义图片字体(CustomFont),网上有很多教程,细节不尽相同,当概括起来基本就是两种方式.一是使用BMFont,导出图集和.fnt文件,再使用图集在Unity中设置得到字体.二是 ...

最新文章

  1. PHP通过header实现文本文件的下载
  2. java jfm入门_java图形编程
  3. skipfish 主动扫描web安全评估工具
  4. Golang Post传参调用示例
  5. 利用itext包实现java报表打印_利用iText包实现Java报表打印
  6. vim入门教程(简洁有效)
  7. android人脸建模软件,AI人工智能+面部照片3D建模,3D版捏脸美颜软件羽迹试试成功面世...
  8. Ubuntu系统死机解决办法
  9. 配置管理的目标和主要活动
  10. 千帆竞发势如虹 明光政策送东风 首届明光大赛来了
  11. 计算机安装xp蓝屏怎么办,重装xp系统一直蓝屏重启循环怎么回事
  12. 家用无线路由器购买入门指南
  13. Pandas操作总结
  14. OPTICS聚类以及python实现
  15. Tomcat优化思路
  16. 利用Python爬虫抓取猫眼电影排行(BeautifulSoup方式初试手,欢迎改进)
  17. 【Pytorch】torch.Tensor.expand_as()与torch.Tensor.expand()使用与比较
  18. NeurlPS2020:Neuron-level Structured Pruning using Polarization Regularizer(polarization正则化技术)
  19. 在yolo训练的时候又去测试就会报错:cuda error: out of memory
  20. 移植 linux-5.8.5 到 iTOP-4412(一)build config

热门文章

  1. java题-如何递归遍历一个文件夹下的所有文件
  2. C/C++ OpenCV五种滤波器综合示例
  3. 计算机美国学游戏开发,【工程与计算机】一石二鸟:开发游戏为申美国名校加码...
  4. 使用python写一个倒计时_Python 实现一个计时器
  5. Packet Capture
  6. vlookup练习_VLOOKUP拉住她的手,数据查询不用愁
  7. 使用map的find头文件_C++ map的基本操作和使用
  8. python 魔法方法常用_Python 常用魔法方法(下)
  9. 计算机网络之传输层:1、概述(传输层功能、端口号、套接字、TCP、UDP)
  10. SO_REUSEADDR SO_REUSEPORT 解析