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 实现半开环形图的更多相关文章

  1. vue 使用Echarts 环形图 自定义legend formatter 富文本标签

    main.js 引入echarts // 引入echarts import Echarts from 'echarts' Vue.prototype.$echarts = Echarts   < ...

  2. echarts实现环形图

    前端框架使用的angular,使用echarts实现环形图 1. item.component.html <div id="box1" class="pie&quo ...

  3. 修改echarts环形图的牵引线及文字位置

    修改echarts环形图的牵引线及文字位置,下面代码及效果不仅如此,也包含了其它的效果哦.有问题可以留言. 根据echarts官方示例修改效果: 官方示例图: 修改效果图: 直接上代码:其它不多说. ...

  4. echarts白色实心环形图(空心饼图)的编写

    // 数据接入机构统计let myDom = document.getElementById('myChart');let myWidth = myDom.offsetWidth - 5; // 获取 ...

  5. Echarts数据可视化series-graph关系图,开发全解+完美注释

    全栈工程师开发手册 (作者:栾鹏) Echarts数据可视化开发代码注释全解 Echarts数据可视化开发参数配置全解 6大公共组件详解(点击进入): title详解. tooltip详解.toolb ...

  6. Vue使用Echarts以及Echarts配置分享

    一.本篇文章将给大家分享如何在vue中使用echart以及echart各项配置,这些配置都是工作中比较常见以及常用到的,所以给大家分享下,希望对大家有用. 二.vue中使用echart. 1.首先下载 ...

  7. 数据输入——生成你需要的echart图(堆积柱状图、扇形图、嵌套环形图)

    最近论文需要一些比较直观的图表, 发现echart做出来的图还是比较美观的,这里介绍如何修改数据生成你需要的echart图. 1.堆积柱状图: http://echarts.baidu.com/exa ...

  8. echart 折线图、柱状图、饼图、环形图颜色修改

    之前在做报表的时候用过echart 用完也就完了,而这次在用的时候已经忘了,所以这里简单记录一下,好记性不如烂笔头!!! 1.折线图修改颜色: xAxis: { type: 'category', b ...

  9. vue使用Echarts图表

    vue使用Echarts图表 童话_xxv 关注  0.5 2018.12.11 09:09* 字数 325 阅读 1456评论 2喜欢 13 在开发后台系统时,使用图表进行数据可视化,这样会使数据更 ...

随机推荐

  1. 初学android小笔记(一)

    一:应用外观基础设置 (1)去掉标题栏:打开Android Manifest文件,将theme如下设置 (2)改应用图标:将icon指定图片改为想要的app图标即可 (3)改应用名字: 在Manife ...

  2. AtCoder Grand Contest 038

    目录 \(\bf A - 01 \ Matrix\) \(\bf B- Sorting \ a \ Segment\) \(\bf C-LCMs\) \(\bf D-Unique \ Path\) 这 ...

  3. Java高性能反射工具包ReflectASM

    ReflectASM 使用字节码生成的方式实现了更为高效的反射机制.执行时会生成一个存取类来 set/get 字段,访问方法或创建实例.一看到 ASM 就能领悟到 ReflectASM 会用字节码生成 ...

  4. PHP str_replace的用法

    PHP str_replace的用法 1 替换单个字符<pre><?phpecho str_replace("world","Shanghai" ...

  5. docker-compose搭建zookeeper集群

    搭建zookeeper集群 创建docker-compose.yml文件 ``` version: '3.1' services: zoo1: image: zookeeper restart: al ...

  6. [ERROR]Unable to locate package

    刚更换了DNS,需要更新下apt-get $ apt-get update

  7. springMVC-MyBatis-Mysql 环境下, 返回时间格式不是指定格式

    在数据库中的时间是: 比如: 2018-04-06:12;23:34. 但是mybatis查询出来以后是下面的格式. {"updatedTime":{"date" ...

  8. nyoj 739 笨蛋难题四

    笨蛋难题四 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 这些日子笨蛋一直研究股票,经过调研,终于发现xxx公司股票规律,更可喜的是 笨蛋推算出这家公司每天的股价, ...

  9. lqb 基础练习 数列排序 (sort的使用)

    基础练习 数列排序 时间限制:1.0s   内存限制:512.0MB     问题描述 给定一个长度为n的数列,将这个数列按从小到大的顺序排列.1<=n<=200 输入格式 第一行为一个整 ...

  10. jQuery—— 选择器汇总

    jQuery里的选择器有3种: 元素选择器,id选择器, 类选择器:   $("div") // 选择所有<div>元素 $("#test") // ...