vue 结合 Echarts 实现半开环形图
Echarts 实现半开环形图
1.先看看实现的图
2.HTML部分
创建id 是 chart 的div标签。
<div class="content-item">
<div id="chart" style="width:300px;height:300px"></div>
</div>
3.封装的 option
- import { getAnnulusOption } from './option.js'
下面内容是 文件 option.js (可以直接复制)
function deepCopy (obj) {
let newObj
// 如果不是数组对象,并且对象存在,直接返回就可以
if (obj && typeof obj !== 'object') {
newObj = obj
return newObj
}
var targetObj = obj.constructor === Array ? [] : {}
for (var keys in obj) {
if (obj.hasOwnProperty(keys)) {
if (obj[keys] && typeof obj[keys] === 'object') {
targetObj[keys] = obj[keys].constructor === Array ? [] : {}
targetObj[keys] = deepCopy(obj[keys])
} else {
targetObj[keys] = obj[keys]
}
}
}
return targetObj
// return JSON.parse(JSON.stringify(obj));
}
const annulusOption = {
title: {
text: '',
subtext: '',
x: 'center',
y: 'center',
textStyle: {
fontSize: 26,
color: '#5b92fe'
},
subtextStyle: {
fontSize: 12,
color: '#616161'
}
},
color: [],
series: [
{
type: 'pie',
radius: ['65%', '85%'],
avoidLabelOverlap: false,
label: {
normal: {
show: false,
position: 'center'
}
},
hoverAnimation: false,
startAngle: -45,
data: [{ value: 25 }, { value: 0 }, { value: 0 }]
}
]
}
/**
* 获取环形图的data,这个图只用于半开环形图, 并且只能有两个数据输入
* @param {Number[2]} data 两个数据,环形从做到右的数据
* @param {string[2]} colors 两个数据的颜色
* @param {*} text 中心的主标题
* @param {*} subtext 中心的副标题
* @param {Number} textFontSize
* @param {Number} subTextFontSize
*/
function getAnnulusOption (data, colors, text, subtext, textFontSize, subTextFontSize) {
let resultOption = deepCopy(annulusOption)
let optionColor = ['rgba(0,0,0,0)']
optionColor = optionColor.concat(colors)
resultOption.color = optionColor
resultOption.title.text = text
resultOption.title.subtext = subtext
resultOption.title.textStyle.fontSize = textFontSize
resultOption.title.subtextStyle.fontSize = subTextFontSize
let firstData = data[0] || 0
let secondData = data[1] || 0
resultOption.series[0].data[1].value = 75 * firstData / (firstData + secondData)
resultOption.series[0].data[2].value = 75 * secondData / (firstData + secondData)
return resultOption
}
export { getAnnulusOption }
4.JS部分
<script>
//1.引入上面 创建的 option.js
import { getAnnulusOption } from './option.js'
//2.引入 echarts 图表插件
import echarts from 'Echarts'
export default {
mounted() {
this.$nextTick(() => {
this.renderChart('chart',890, 1000)
})
},
methods: {
/**
* @param {String} id 获取HTML div元素的 ID,
* @param {Number} dividend 数值1 ,(成功个数)
* @param {Number} divisor 数值2,(总数)
*/
//id,
//dividend
//divisor
renderChart (id,dividend, divisor) {
echarts.dispose(document.getElementById(id))
const data = [dividend, divisor - dividend]
const colors = ['#4b7efe', '#beddff']
const percentage = divisor === 0 ? 0 : dividend / divisor * 100
const text = formatValue(percentage, 1) + '%'
const subText = ''
const textFontSize = 20
const subTextFontSize = 0
const option = getAnnulusOption(data, colors, text, subText, textFontSize, subTextFontSize)
const charts = echarts.init(document.getElementById(id))
charts.setOption(option)
},
/**
* @param {number or string} value 数值
* @param {Number} digits 保留小数位数
* @param {bool} returnStr 返回值是字符串(如果保留位数那么返回是一个string)
*/
formatValue (value, digits, returnStr = false) {
if (digits < 0) {
console.log('小数点后位数不能为负数')
value = 0
}
if (!value) {
value = 0
}
if (returnStr) {
return parseFloat(value).toFixed(digits)
}
return parseFloat(parseFloat(value).toFixed(digits))
}
}
}
</script>
vue 结合 Echarts 实现半开环形图的更多相关文章
- vue 使用Echarts 环形图 自定义legend formatter 富文本标签
main.js 引入echarts // 引入echarts import Echarts from 'echarts' Vue.prototype.$echarts = Echarts < ...
- echarts实现环形图
前端框架使用的angular,使用echarts实现环形图 1. item.component.html <div id="box1" class="pie&quo ...
- 修改echarts环形图的牵引线及文字位置
修改echarts环形图的牵引线及文字位置,下面代码及效果不仅如此,也包含了其它的效果哦.有问题可以留言. 根据echarts官方示例修改效果: 官方示例图: 修改效果图: 直接上代码:其它不多说. ...
- echarts白色实心环形图(空心饼图)的编写
// 数据接入机构统计let myDom = document.getElementById('myChart');let myWidth = myDom.offsetWidth - 5; // 获取 ...
- Echarts数据可视化series-graph关系图,开发全解+完美注释
全栈工程师开发手册 (作者:栾鹏) Echarts数据可视化开发代码注释全解 Echarts数据可视化开发参数配置全解 6大公共组件详解(点击进入): title详解. tooltip详解.toolb ...
- Vue使用Echarts以及Echarts配置分享
一.本篇文章将给大家分享如何在vue中使用echart以及echart各项配置,这些配置都是工作中比较常见以及常用到的,所以给大家分享下,希望对大家有用. 二.vue中使用echart. 1.首先下载 ...
- 数据输入——生成你需要的echart图(堆积柱状图、扇形图、嵌套环形图)
最近论文需要一些比较直观的图表, 发现echart做出来的图还是比较美观的,这里介绍如何修改数据生成你需要的echart图. 1.堆积柱状图: http://echarts.baidu.com/exa ...
- echart 折线图、柱状图、饼图、环形图颜色修改
之前在做报表的时候用过echart 用完也就完了,而这次在用的时候已经忘了,所以这里简单记录一下,好记性不如烂笔头!!! 1.折线图修改颜色: xAxis: { type: 'category', b ...
- vue使用Echarts图表
vue使用Echarts图表 童话_xxv 关注 0.5 2018.12.11 09:09* 字数 325 阅读 1456评论 2喜欢 13 在开发后台系统时,使用图表进行数据可视化,这样会使数据更 ...
随机推荐
- 用c语言实现前序创建二叉树(递归),分别用前序,中序,后序遍历,以及分别输出节点个数和叶子节点个数
本人c语言小白一枚,近期在学习数据结构(c语言版),特写此随笔,做一些总结和分享,如有不当之处,请各位技术大牛斧正 首先我们用一个结构体来抽象树的结点,代码如下(这里我们存放的数据为char型,大家可 ...
- Python中的is和==的区别
Python中的is和==的区别 1. is 是比较内存地址id() a = "YongJie" b = "YongJie" print(id(a)) #233 ...
- pyEcharts安装及使用指南
pyEcharts安装及使用指南 ECharts是一个纯Javascript的图表库,可以流畅的运行在PC和移动设备上,兼容当前绝大部分浏览器,底层依赖轻量级的Canvas类库ZRender,提供直观 ...
- opacity层叠问题
使用了position属性值为 absolute.relative 的层,将会比普通层更高层次.使用了小于1的opacity属性的层,也比普通层更高层次并且和指定 position 的层同层,但是不支 ...
- QHDYZ模拟赛20191027 提前透题
你们想的美 我给你们透一下题目名称 别刷博客了快去做题
- 【建站02】WordPress主题设置
大家好,我是帝哥.相信很多朋友看了我上一篇文章的介绍之后已经可以搭建自己的个人网站了,但是网站的功能和美观程度都还是有所欠缺的,现在呢,再给大家大概的介绍一些如何美化自己的网站,当然了,这个过程也是很 ...
- NOIP模拟30B 活该
T1:没有判-1 T2:推出柿子之后手摸错了!,只交了一个表 T3....... 完戏!,就是活该!
- 『题解』洛谷P3958 奶酪
Portal Portal1: Luogu Portal2: LibreOJ Portal3: Vijos Description 现有一块大奶酪,它的高度为\(h\),它的长度和宽度我们可以认为是无 ...
- Unity 简记(2)--2D移动
目录 1.输入 1.1直接检测按下哪个按键 1.2.检测水平输入和垂直输入 2.移动 2.1.Transform组件 2.2.RigidBody组件 2.3.NavMeshAgent组件 2.4.Ch ...
- Rxjava2源码解析
1:用法: Observable<Integer> observable = Observable.create(new ObservableOnSubscribe<Integer& ...