vue + echarts

1.安装echarts依赖

npm install echarts -S

或者使用国内的淘宝镜像:

安装

npm install -g cnpm --registry=https://registry.npm.taobao.org

使用

cnpm install echarts -S

2.创建图表

全局引入

main.js

// 引入echarts
import echarts from ‘echarts‘
Vue.prototype.$echarts = echarts

Hello.vue

<div id="myChart" :style="{width: ‘300px‘, height: ‘300px‘}"></div>

3.mounted 中调用 (mounted 是 vue 的生命周期,表示挂载完毕,html 已经渲染)

mounted(){
    this.$nextTick(function() {
        this.drawPie(‘myChart‘)
    })
}

4.组件

<template>
  	<!--为echarts准备一个具备大小的容器dom-->
  	<div id="myChart" style="width:300px;height:300px;"></div>
</template>

<script>
    export default {
        name: ‘‘,
        data () {
            return {
                charts: ‘‘,
                opinion:[‘直接访问‘,‘邮件营销‘,‘联盟广告‘,‘视频广告‘,‘搜索引擎‘],
                opinionData:[
                  	{value:335, name:‘直接访问‘},
                  	{value:310, name:‘邮件营销‘},
                  	{value:234, name:‘联盟广告‘},
                  	{value:135, name:‘视频广告‘},
                  	{value:1548, name:‘搜索引擎‘}
                ]
            }
        },
        methods:{
            drawPie(id){
               	this.charts = $echarts.init(document.getElementById(id));
               	this.charts.setOption({
                 	tooltip: {
                   		trigger: ‘item‘,
                   		formatter: ‘{a}<br/>{b}:{c} ({d}%)‘
                 	},
                 	legend: {
                   		orient: ‘vertical‘,
                   		x: ‘left‘,
                   		data:this.opinion
                 	},
                 	series: [
                   		{
                     		name:‘访问来源‘,
                     		type:‘pie‘,
                     		radius:[‘50%‘,‘70%‘],
                     		avoidLabelOverlap: false,
                     		label: {
                       			normal: {
                         			show: false,
                         			position: ‘center‘
                       			},
                       			emphasis: {
                         			show: true,
                         			textStyle: {
                           				fontSize: ‘30‘,
                           				fontWeight: ‘blod‘
                         			}
                       			}
                     		},
                     		labelLine: {
                       			normal: {
                         			show: false
                       			}
                     		},
                     		data:this.opinionData
                   		}
                   	]
               	})
            }
        },
      	//调用
        mounted(){
            this.$nextTick(function() {
                this.drawPie(‘myChart‘)
            })
        }
    }
</script>

<style scoped>
    * {
        margin: 0;
        padding: 0;
        list-style: none;
    }
</style>

5.效果图

6.监听扇形区域点击事件

时间: 2024-08-01 13:39:40

vue + echarts的相关文章

vue echarts 遇到的bug之一 无法渲染的问题

图表示这样的 页面上有很多个图表,由于没有查询按钮,就只是点击发送ajax数据,所以把所有图表的方法放在updated中, 功能是实现了没问题,但是加载页面的时候会发送很多的ajax请求,而且点击修改的时候整个页面的图表都会重绘,目前考虑的解决办法是做一个判断,如果当前的的这个对象的数值发生改变了再出发DOM更新 ,大家有没有更好的方法,谢啦感谢@zhaokang 的回答,我在设置watch监听数组之后,已经可以动态的更新echarts图表, 效果如下 touchComparison是一个数组

vue+echarts 动态绘制图表以及异步加载数据

前言 背景:vue写的后台管理,需要将表格数据绘制成图表(折线图,柱状图),图表数据都是通过接口请求回来的. 安装 cnpm install echarts --s (我这里用了淘宝镜像,不知道同学自行百度) 实例化   在已有的项目中下载好了echarts 之后,可以打开官方文档,但是我觉得官方文档对于实例化介绍的不够清晰,这也是我为什么在这么多的文章中还要写的原因,前辈写的太模糊了,我决定好好给后来人,需要在项目中引用图表的人,一些实用,快捷的东西. 官方文档:http://echarts.

vue+echarts实现可拖动节点的折现图(支持拖动方向和上下限的设置)

本篇文档主要是利用echarts实现可拖动节点的折现图,在echarts中找到了一个demo,传送门:https://echarts.baidu.com/examples/editor.html?c=line-draggable,但是不是用vue写的,并且在改写为vue组件的过程中遇到了很多问题,在百度过程中发现并没有相关的文档,所以决定自己开发,并在demo的基础上开发了一些实用的功能,所以把这个过程记录下来.文档中还有很多不够完善的地方,欢迎讨论哈! 需求:制作一个折线图用于显示当前24小时

vue + echarts画圈圈

<div class="chart-bar-left" id= "chartbar-left" style="margin-top:1%;"> v-chart :options="optionPieleft" class="chart-pie-left"/> </div> <script> //添加引用 import ECharts from "vue-e

vue echarts error: Cannot read property getAttribute of null

问题复现与原因解释: div标签上用了v-if:level === 2,level初始值是-1,只有在mounted中执行完某函数后给level赋值后,level的值才可能为真:而对图表的渲染就在赋值语句的下一行,echarts很可能找不到dom节点.因为在条件为假时,v-if不会渲染条件块,只有当条件为真,才开始渲染条件块. 解决: 将v-if改成v-show,因为无论条件真值如何,v-show的元素总是被渲染. 不要在条件为假的时候渲染echarts. 如果可以,考虑令条件表达式初始值为真.

vue内使用echarts

18年下班年用的vue + echarts,现在才想起来总结,着实不敬业 线上的项目叫股往(http://rich.xchol.com/#/) 好了,进入正题: 首先,需要新建一个vue的项目,在vue项目的基础上,安装echarts的依赖 npm install echarts -S 全局引入echarts 第一步:找到src文件下的main.js第二步: import echarts from 'echarts' Vue.prototype.$echarts = echarts 页面里可以通

银月星海的旅途

之前用过简书写博客 https://www.jianshu.com/u/b2617b480168 ,但总是懒懒的,完全沉迷于网游中.直到看到 https://www.cnblogs.com/charlotte77/ https://blog.csdn.net/f_zyj/article/list/67? ,感触颇深.所以急切希望自己励精图治,再四年后的今天能有charlotte777姐姐般的成就. 大学: 今天,是2019年9月1日,不知不觉大学已经毕业两年了,时间过的真的快. 13年毕业选大学

vue使用ECharts时的异步更新与数据加载

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px "Helvetica Neue"; color: #404040 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px "Helvetica Neue"; color: #737373 } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco

Wabpack系列:在webpack+vue开发环境中使用echarts导致编译文件过大怎么办?

现象,在一个webpack+vue的开发环境中,npm install echarts --save了echarts,然后在vue文件中直接使用 import echarts from 'echarts' 然后编译的时候加上了Uglify选项,发现vendor文件的大小已经达到了800多k,导致首次加载速度比较慢,然后我们这个是webapp,就更慢了. 所以考虑把echarts提取出来,改用cdn版本的echarts,具体操作步骤如下: (0)找到可用的echartscdn资源 在bootcdn