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 在开发后台系统时,使用图表进行数据可视化,这样会使数据更 ...
随机推荐
- 实战SpringCloud响应式微服务系列教程(第九章)使用Spring WebFlux构建响应式RESTful服务
本文为实战SpringCloud响应式微服务系列教程第九章,讲解使用Spring WebFlux构建响应式RESTful服务.建议没有之前基础的童鞋,先看之前的章节,章节目录放在文末. 从本节开始我们 ...
- IDAE 将外部jar打入本地maven仓库
方式1:dependency 本地jar包 <dependency> <groupId>com.hope.cloud</groupId> <!--自定义--& ...
- Map Reduce 论文阅读
Map Reduce 是 Google 在 2004 年发表的一篇论文,原文链接 在这 后来 Hadoop 直接内置了这一框架. 读完之后记录一下心得. 主要背景:MapReduce 的出现很具有工程 ...
- [考试反思]0822NOIP模拟测试29:延续
想保持优秀很困难 但是想持续垫底却很简单 但是你不想垫底的话持续垫底也很容易... 分AB卷,A卷共15人. skyh,tdcp,kx155,B哥145... 我:35,倒数第一. 板子专题,爆零快乐 ...
- [考试反思]0714/0716,NOIP模拟测试3/4
这几天时间比较紧啊(其实只是我效率有点低我在考虑要不要坐到后面去吹空调) 但是不管怎么说,考试反思还是要写的吧. 第三次考试反思没写总感觉缺了点什么,但是题都刷不完... 一进图论看他们刷题好快啊为什 ...
- NOIP模拟18 T2
不知道为什么很多人拒绝这题打搜索...其实搜索在充分剪枝后时间是非常优秀的,不管数据怎样基本都可跑出 首先一个显然结论:对于某种状态,他抓到的小精灵一定是一个连续的区间. 因此我们可以枚举这个区间的左 ...
- Hbase与Oracle的比较
http://blog.csdn.net/lucky_greenegg/article/details/47070565 转自:http://www.cnblogs.com/chay1227/arch ...
- JS中获取元素属性的逆天大法
给大家聊下js中获取元素属性的逆天大法,胆小慎入,切记切记!!! innerHTML.outerHTML.innerText .outerText.value.text().html(),val() ...
- 通俗易懂了解Vue双向绑定原理及实现
看到一篇文章,觉得写得挺好的,拿过来给大家分享一下,刚好解答了一些困扰我的一些疑惑!!! 1. 前言 每当被问到Vue数据双向绑定原理的时候,大家可能都会脱口而出:Vue内部通过Object.defi ...
- JavaScript如何友好的操作的cookie
1.前言 众所周知,在JS中处理cookie有些复杂,因为其操作cookie的接口相当不友好,即BOM的document.cookie属性.这个属性的独特之处在于它会因为使用它的方式不同而表现出不同的 ...