echarts 旭日图sunburst[通俗易懂]

echarts 旭日图sunburst[通俗易懂]1、配置数据 第一层为最内层的环,第二层为第一层对应的children所构成的环 [ { value:n, 数值,根据同层所有数值的占比,构成百分比圆环,不写为内部第一层children的数值和 若设置的值大于内部第一层的数值,即表示有未显示的内容,具体表示图会压缩同层其他环占比 name:’显示内容’, children:[ { value:n, name:’显示内容’ } ] }, { va

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

1、配置数据
 	数据结构上,内圈是外圈的父节点
	[
		{
		 	value:n,   
		 		数值,根据同层所有数值的占比,构成百分比圆环,不写为内部第一层children的数值和
		 		若设置的值大于内部第一层的数值,即表示有未显示的内容,具体表示图会压缩同层其他环占比
		 	name:'显示内容',
		 	link:'点击此节点可跳转的超链接',	nodeClick值为'link'时才生效
		 	target = 'blank|self',			nodeClick值为'link'时才生效
		 	r:n|n%,		该层圆环的内半径,设置后radius无效
		 	r0:n|n%,	该层圆环的外半径,设置后radius无效
		 	children:[
			 {
			 	value:n,
				name:'显示内容'
			 }
			]
		},
		{
			value:n,
			name:''
		}
	]

2、配置series
 series:[
	{
	    type:'sunburst',
	    center:['50%','50%'],
	    radius = [0, '75%'],  内半径,外半径
        sort:function(nodeA, nodeB) {  对数值进行排序后再展示
          return -nodeA.getValue() + nodeB.getValue()
        },
        highlightPolicy:'ancestor',  高亮是圆环显示形式
        	'descendant',则会高亮该扇形块和后代元素,其他元素将被淡化
        	'ancestor',则会高亮该扇形块和祖先元素;
            'self' 则只高亮自身;
            'none' 则不会淡化其他元素。
       nodeClick:'zoomToNode'	点击节点后缩放到节点
	       	false:节点点击无反应
			'link':如果节点数据中有 link 点击节点后会进行超链接跳转。
	   sort:'desc|asc|null'	扇形块根据数据value的排序方式,如果未指定value,则其值为子元素value之和
		 	function(nodeA, nodeB) {
			    return nodeA.getValue() - nodeB.getValue();
			}
	   label:{
	   	 rotate:'radial'	径向旋转
	   	 	'tangential' 	切向旋转
	   	 	n数字
	   },
       levels:[  设置各个层级圆环样式
		{
			第一层表示,点击后中间空白圆圈的样式,即点击返回的圆圈
			itemStyle:{}
		},
		{
			第二层设置最内层圆环的样式
			label:{},
			itemStyle:{},
			emphasis:{}, 高亮样式
			highlight:{}, 鼠标悬停后相关扇形块的配置项
			downplay:{ 从本层开始,未悬停区域的颜色
				label:{},
				itemStyle:{}
			}
		}
	   ]

	}
 ]

效果图:
在这里插入图片描述
点击后:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码示例:

<template>
<div id="app">
<div class='map'>
</div>
<div class='map2'>
</div>
<div>
<button @click="add">修改</button>
<button @click="highLight">高亮</button>
</div>
<!-- <router-view/> -->
</div>
</template>
<script>
import echarts from 'echarts';
import axios from 'axios';
export default { 

name: 'App',
data()
{ 

return{ 

myMap:'',
pieData:[{ 
name:'淘宝',value:'11231'},{ 
name:'京东',value:'22673'},{ 
name:'唯品会',value:'6123'},{ 
name:'1号店',value:'8989'},{ 
name:'聚美优品',value:'6700'}]
}
},
methods:{ 

add()
{ 

this.pieData.push({ 
name:'苏宁',value:'9999'})
var option={ 

series:[
{ 

data:this.pieData
}
]
}
this.myMap.setOption(option);
},
highLight()
{ 

this.myMap.dispatchAction({ 

type: 'highlight',
// seriesIndex:0,
dataIndex: 2,
})
}
},
mounted:async function(){ 

var myMap=echarts.init(document.querySelector('.map'));
this.myMap=myMap;
var xData=['张三','彭万里','高大山','谢大海','马宏宇','林莽','黄强辉','章汉夫']
var yData1=[88,92,63,77,94,80,72,86];
var yData2=[80,90,60,70,90,70,62,76];
// var pieData=[{name:'淘宝',value:'11231'},{name:'京东',value:'22673'},{name:'唯品会',value:'6123'},{name:'1号店',value:'8989'},{name:'聚美优品',value:'6700'}]
var radaData=[{ 
name: '华为手机1',value: [80, 90, 80, 82, 90]},{ 
name: '中兴手机1',value: [70, 82, 75, 70, 78]}]
var dataMax = [
{ 

name: '易用性',
max: 100
},
{ 

name: '功能',
max: 100
},
{ 

name: '拍照',
max: 100
},
{ 

name: '跑分',
max: 100
},
{ 

name: '续航',
max: 100
}
]
var option = { 

legen:{ 

show:true,
},
series:[{ 

type:'sunburst',
sort:function(nodeA, nodeB) { 

return -nodeA.getValue() + nodeB.getValue()
},
highlightPolicy:'ancestor',
data:
[{ 

name: 'parent1',
value: 10,          // 可以不写父元素的 value,则为第一层子元素之和;
// 如果写了,并且大于子元素之和,可以用来表示还有其他子元素未显示
children: [
{ 

value: 5,
name: 'child1',
children: [{ 

value: 8,  //根据第一层节点的value数值,来进行占比绘制,若第一层无value,则根据第一层子节点的value进行占比
name: 'grandchild1',
}]
}, 
{ 

value: 3,
name: 'child2',
}
],
itemStyle: { 

// parent1 的图形样式,不会被后代继承
},
label: { 

// parent1 的标签样式,不会被后代继承
}
}, { 

name: 'parent2',
value: 8,
children:[{ 

value:8,
name:'p2child'
}]
}],
levels:[{ 
  //第一层表示,点击后中间空白圆圈的样式,即返回圆圈
itemStyle:{ 

color:'orange'
},
emphasis:{ 

itemStyle:{ 

// color:'blue'
}
}
},
{ 

itemStyle:{ 

color:'purple'
},
downplay:{ 
  //从本层开始,未悬停区域的颜色
itemStyle:{ 

color:'green'
}
}
},
{ 

downplay:{ 

itemStyle:{ 

color:'black'
}
}
}
]
}]
};
myMap.setOption(option);
}
}
</script>
<style>
.map{ 

height:400px;
width: 100%;
/* width:700px; */
}
.map2{ 

height:400px;
width: 100%;
/* width:700px; */
}
</style>

第三张图配置项:

var option = { 

series: { 

type: 'sunburst',
data: [{ 

name: 'A',
value: 10,
children: [{ 

value: 3,
name: 'Aa'
}, { 

value: 5,
name: 'Ab'
}]
}, { 

name: 'B',
children: [{ 

name: 'Ba',
value: 4
}, { 

name: 'Bb',
value: 2
}]
}, { 

name: 'C',
value: 3
}]
}
};

第四张图代码示例:

var colors = ['#FFAE57', '#FF7853', '#EA5151', '#CC3F57', '#9A2555'];
var bgColor = '#2E2733';
var itemStyle = { 

star5: { 

color: colors[0]
},
star4: { 

color: colors[1]
},
star3: { 

color: colors[2]
},
star2: { 

color: colors[3]
}
};
var data = [{ 

name: '虚构',
itemStyle: { 

color: colors[1]
},
children: [{ 

name: '小说',
children: [{ 

name: '5☆',
children: [{ 

name: '疼'
}, { 

name: '慈悲'
}, { 

name: '楼下的房客'
}]
}, { 

name: '4☆',
children: [{ 

name: '虚无的十字架'
}, { 

name: '无声告白'
}, { 

name: '童年的终结'
}]
}, { 

name: '3☆',
children: [{ 

name: '疯癫老人日记'
}]
}]
}, { 

name: '其他',
children: [{ 

name: '5☆',
children: [{ 

name: '纳博科夫短篇小说全集'
}]
}, { 

name: '4☆',
children: [{ 

name: '安魂曲'
}, { 

name: '人生拼图版'
}]
}, { 

name: '3☆',
children: [{ 

name: '比起爱你,我更需要你'
}]
}]
}]
}, { 

name: '非虚构',
itemStyle: { 

color: colors[2]
},
children: [{ 

name: '设计',
children: [{ 

name: '5☆',
children: [{ 

name: '无界面交互'
}]
}, { 

name: '4☆',
children: [{ 

name: '数字绘图的光照与渲染技术'
}, { 

name: '日本建筑解剖书'
}]
}, { 

name: '3☆',
children: [{ 

name: '奇幻世界艺术\n&RPG地图绘制讲座'
}]
}]
}, { 

name: '社科',
children: [{ 

name: '5☆',
children: [{ 

name: '痛点'
}]
}, { 

name: '4☆',
children: [{ 

name: '卓有成效的管理者'
}, { 

name: '进化'
}, { 

name: '后物欲时代的来临'
}]
}, { 

name: '3☆',
children: [{ 

name: '疯癫与文明'
}]
}]
}, { 

name: '心理',
children: [{ 

name: '5☆',
children: [{ 

name: '我们时代的神经症人格'
}]
}, { 

name: '4☆',
children: [{ 

name: '皮格马利翁效应'
}, { 

name: '受伤的人'
}]
}, { 

name: '3☆'
}, { 

name: '2☆',
children: [{ 

name: '迷恋'
}]
}]
}, { 

name: '居家',
children: [{ 

name: '4☆',
children: [{ 

name: '把房子住成家'
}, { 

name: '只过必要生活'
}, { 

name: '北欧简约风格'
}]
}]
}, { 

name: '绘本',
children: [{ 

name: '5☆',
children: [{ 

name: '设计诗'
}]
}, { 

name: '4☆',
children: [{ 

name: '假如生活糊弄了你'
}, { 

name: '博物学家的神秘动物图鉴'
}]
}, { 

name: '3☆',
children: [{ 

name: '方向'
}]
}]
}, { 

name: '哲学',
children: [{ 

name: '4☆',
children: [{ 

name: '人生的智慧'
}]
}]
}, { 

name: '技术',
children: [{ 

name: '5☆',
children: [{ 

name: '代码整洁之道'
}]
}, { 

name: '4☆',
children: [{ 

name: 'Three.js 开发指南'
}]
}]
}]
}];
for (var j = 0; j < data.length; ++j) { 

var level1 = data[j].children;
for (var i = 0; i < level1.length; ++i) { 

var block = level1[i].children;
var bookScore = [];
var bookScoreId;
for (var star = 0; star < block.length; ++star) { 

var style = (function (name) { 

switch (name) { 

case '5☆':
bookScoreId = 0;
return itemStyle.star5;
case '4☆':
bookScoreId = 1;
return itemStyle.star4;
case '3☆':
bookScoreId = 2;
return itemStyle.star3;
case '2☆':
bookScoreId = 3;
return itemStyle.star2;
}
})(block[star].name);
block[star].label = { 

color: style.color,
downplay: { 

opacity: 0.5
}
};
if (block[star].children) { 

style = { 

opacity: 1,
color: style.color
};
block[star].children.forEach(function (book) { 

book.value = 1;
book.itemStyle = style;
book.label = { 

color: style.color
};
var value = 1;
if (bookScoreId === 0 || bookScoreId === 3) { 

value = 5;
}
if (bookScore[bookScoreId]) { 

bookScore[bookScoreId].value += value;
}
else { 

bookScore[bookScoreId] = { 

color: colors[bookScoreId],
value: value
};
}
});
}
}
level1[i].itemStyle = { 

color: data[j].itemStyle.color
};
}
}
option = { 

backgroundColor: bgColor,
color: colors,
series: [{ 

//radius: ['0%', '70%'],
type: 'sunburst',
center: ['50%', '48%'],
data: data,
sort: function (a, b) { 

if (a.depth === 1) { 

return b.getValue() - a.getValue();
}
else { 

return a.dataIndex - b.dataIndex;
}
},
label: { 

rotate: 'radial',
color: bgColor
},
itemStyle: { 

borderColor: bgColor,
borderWidth: 2
},
levels: [{ 
}, { 

r0: 0,
r: 40,
label: { 

rotate: 0
}
}, { 

r0: 40,
r: 105
}, { 

r0: 115,
r: 140,
itemStyle: { 

shadowBlur: 2,
shadowColor: colors[2],
color: 'transparent'
},
label: { 

rotate: 'tangential',
fontSize: 10,
color: colors[0]
}
}, { 

r0: 140,
r: 145,
itemStyle: { 

shadowBlur: 80,
shadowColor: colors[0]
},
label: { 

position: 'outside',
textShadowBlur: 5,
textShadowColor: '#333'
},
downplay: { 

label: { 

opacity: 0.5
}
}
}]
}]
};
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/189375.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • [linux] sshd_config 打开PermitRootLogin

    [linux] sshd_config 打开PermitRootLogin允许root用户远程登录vim/etc/ssh/sshd_configPermitRootLoginyes允许无密码登录1)将PermitEmptyPasswordsyes前面的#号去掉2)将PermitEmptyPasswords参数值修改为yesservicesshdrestart

  • 数仓拉链表[通俗易懂]

    数仓拉链表[通俗易懂]拉链表一丶什么是拉链表拉链表是一种数据模型,主要是针对数据仓库设计中表存储数据的方式而定义的,顾名思义,所谓拉链,就是记录历史。记录一个事物从开始,一直到当前状态的所有变化的信息。拉链表可以避免按每一天存储所有记录造成的海量存储问题,同时也是处理缓慢变化数据的一种常见方式。百度百科的解释:拉链表是维护历史状态,以及最新状态数据的一种表,拉链表根据拉链粒度的不同,实际上相当于快照,只不过做了优化,去除了一部分不变的记录,通过拉链表可以很方便的还原出拉链时点的客户记录。二丶拉链表的产生背景在数据仓库的

    2022年10月16日
  • 大数据挖掘有哪些技术

    大数据挖掘有哪些技术  数据挖掘技术虽是一项新兴的数据处理技术,但其发展速度十分迅猛,至今已经形成了决策树、神经网络、统计学习、聚类分析、关联规则等多项数据挖掘技术,极大的满足了用户的需求。  1、决策树算法  决策树算法是分类和预测的常用技术之一,可用于深入分析分类问题,使用时,决策树能够利用预测理论对多个变量中进行分析,从而预测处任一变量的发展趋势和变化关系;除此以外,还能对变量发展趋势进行双向预测,既能进行正向预测,也能进行反向预测,因此具有方便灵活的优势。  2、神经网络算法  神经网络是将计算机技术与

  • python中append函数什么意思_python中append函数用法讲解

    python中append函数什么意思_python中append函数用法讲解python中append函数用法讲解如果在做一个地区的统计工作,可以使用列表来帮助我们。输入汉字或者其他字符,比如“01代表汉族”,那么在写民族的时候有下拉列表,就可以打01,就会自动识别为汉族。列表是用来大规模数据填报的时候使用,在python中,也有很多使用到列表的时候,那你知道如何在列表的末尾添加新的对象?今天,我们就来认识一下python中可以在列表末尾添加元素的append函数。1、a…

  • RxJava(三) flatMap 操作符用法详解

    RxJava(三) flatMap 操作符用法详解RxJava系列文章目录导读:一、RxJavacreate操作符的用法和源码分析二、RxJavamap操作符用法详解三、RxJavaflatMap操作符用法详解四、RxJavaconcatMap操作符用法详解五、RxJavaonErrorResumeNext操作符实现app与服务器间token机制六、RxJavaretryWhen操作符…

  • 【转载】HTTP POST GET SOAP本质区别详解

    【转载】HTTP POST GET SOAP本质区别详解

    2021年11月18日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号