
绘图杂记【7】echarts / python 雷达图
)
发布日期:2021-05-07 22:36:41
浏览次数:10
分类:精选文章
本文共 7982 字,大约阅读时间需要 26 分钟。
option = { title : { text: '雷达图', subtext: '卖山楂啦prss', textStyle: { color: '#000000', fontSize: 20, } }, tooltip : { trigger: 'axis' }, legend: { orient : 'vertical', x : 'right', y : '50', data:['英雄1','英雄2'], itemWidth:30,//图例的宽度 itemHeight:10,//图例的高度 color:['#C1232B','#B5C334'], textStyle:{ //图例文字的样式 color:'#000000', fontSize:17 } }, //修改图例颜色 color:['#D2CBF1','#F1C3C3'], toolbox: { show : true, feature : { dataView : { show: true}, restore : { show: true}, saveAsImage : { pixelRatio: 15} } }, ////////////////////////////////////////////////////// radar : [ { indicator : [ { text: '技能1', max: 6000}, { text: '技能2', max: 16000}, { text: '技能3', max: 30000}, { text: '技能4', max: 38000}, { text: '技能5', max: 52000}, { text: '技能6', max: 25000} ], splitArea : { show : true, areaStyle : { color: ['#FFFFFF', '#EEEEEE','#FFFFFF', '#EEEEEE', '#FFFFFF',] // 图表背景网格的颜色 } }, splitLine : { show : true, lineStyle : { width : 1, color : ['#EEEEEE','#EEEEEE'] // 图表背景网格线的颜色 } }, //半径 radius: 190, // 坐标系起始角度,也就是第一个指示器轴的角度。[ default: 90 ] startAngle: 90, // 指示器名称和指示器轴的距离。[ default: 15 ] nameGap: 15, name: { formatter: '{value}', textStyle: { fontSize: 18, color: '#000000' // 文字颜色 } }, shape: 'circle', // 雷达图绘制类型,支持 'polygon'(多边形) 和 'circle'(圆)。[ default: 'polygon' ] splitNumber: 5, // (这里是圆的环数)指示器轴的分割段数。[ default: 5 ] axisLine: { // (圆内的几条直线)坐标轴轴线相关设置 lineStyle: { color: '#000000', // 坐标轴线线的颜色。 width: 0.15, // 坐标轴线线宽。 type: 'solid', // 坐标轴线线的类型。 } }, } ], /////////////////////////////////////////////// calculable : true, series : [ { name: '', type: 'radar', data : [ { value : [4300, 10000, 28000, 35000, 50000, 19000], name : '英雄1', symbol: 'circle', // 单个数据标记的图形。 symbolSize: 5, // 单个数据标记的大小,可以设置成诸如 10 这样单一的数字,也可以用数组分开表示宽和高,例如 [20, 10] 表示标记宽为20,高为10。 label: { // 单个拐点文本的样式设置 normal: { show: true, // 单个拐点文本的样式设置。[ default: false ] position: 'top', // 标签的位置。[ default: top ] distance: 5, // 距离图形元素的距离。当 position 为字符描述值(如 'top'、'insideRight')时候有效。[ default: 5 ] color: '#4B4B4B', // 文字的颜色。如果设置为 'auto',则为视觉映射得到的颜色,如系列色。[ default: "#fff" ] fontSize: 8, // 文字的字体大小 formatter:function(params) { return params.value; } } }, lineStyle: { // 单项线条样式。 normal: { opacity: 0.1 // 图形透明度 } }, areaStyle: { // 单项区域填充样式 normal: { opacity: 0.3, color: 'rgba(255,0,0,0.6)' // 填充的颜色。[ default: "#000" ] }} }, { value : [3000, 14000, 18000, 11000, 42000, 11000], name : '英雄2', symbol: 'circle', // 单个数据标记的图形。 symbolSize: 5, // 单个数据标记的大小,可以设置成诸如 10 这样单一的数字,也可以用数组分开表示宽和高,例如 [20, 10] 表示标记宽为20,高为10。 // 加标签 label: { // 单个拐点文本的样式设置 normal: { show: true, // 单个拐点文本的样式设置。[ default: false ] position: 'top', // 标签的位置。[ default: top ] distance: 5, // 距离图形元素的距离。当 position 为字符描述值(如 'top'、'insideRight')时候有效。[ default: 5 ] color: '#4B4B4B', // 文字的颜色。如果设置为 'auto',则为视觉映射得到的颜色,如系列色。[ default: "#fff" ] fontSize: 8, // 文字的字体大小 formatter:function(params) { return params.value; } } }, lineStyle: { normal: { opacity: 0.1 } }, areaStyle: { normal: { opacity: 0.3, color: 'rgba(51,0,255,0.5)' } } } ] } ]};
数据
import matplotlibimport matplotlib.pyplot as plt import numpy as npimport pandas as pd# matplotlib.style.use('ggplot')matplotlib.rcParams['font.family']='SimHei' matplotlib.rcParams['font.sans-serif']=['SimHei']data_labels=np.array(['英雄1','英雄2','英雄3'])n=6radar_labels=np.array([' 技能1','技能2','技能3',\ '技能4 ','技能5','技能6']) data = np.array(pd.read_clipboard()) angles=np.linspace(0,2*np.pi,6,endpoint=False) #将360度平均分为n个部分(有endpoint=False分为6个部分,反之5个部分)angles=np.concatenate((angles,[angles[0]]))plt.figure(facecolor='white')plt.subplot(111,polar=True)plt.figtext(0.52,0.95,'雷达图',ha='center',size=20) # 设定线条和点的类型形状Linestyle = ['bo-','r+:','gD--']# Linestyle = ['bo-','r+:','gD--','yv-.','kp-']# 设定填充的颜色Fillcolor = ['b','r','g']Fillcolor = ['b','r','g','y','k']for i in range(3): data1 = np.concatenate((data[i],[data[i][0]])) plt.plot(angles,data1,Linestyle[i],linewidth=0.5) plt.fill(angles,data1,facecolor=Fillcolor[i],alpha=0.1)legend=plt.legend(data_labels,loc=(0.94,0.94),labelspacing=0.1)plt.setp(legend.get_texts(),fontsize='small') plt.thetagrids(angles*180/np.pi,radar_labels) plt.grid(True) #打开坐标网格plt.ylim(0, 10)plt.show()plt.savefig(r'C:\Users\Administrator\Desktop\p1.png',dpi=500)

import matplotlibimport matplotlib.pyplot as plt import numpy as npimport pandas as pdmatplotlib.rcParams['font.family']='SimHei' matplotlib.rcParams['font.sans-serif']=['SimHei']data_labels=np.array(['英雄1','英雄2','英雄3'])n=6radar_labels=np.array([' 技能1','技能2','技能3',\ '技能4 ','技能5','技能6']) data = np.array(pd.read_clipboard()) data = np.concatenate((data, [data[0]])) angles=np.linspace(0,2*np.pi,n,endpoint=False)angles=np.concatenate((angles,[angles[0]])) plt.figure(facecolor='white')plt.subplot(111,polar=True)plt.figtext(0.52,0.95,'雷达图',ha='center',size=20) plt.thetagrids(angles*180/np.pi,radar_labels)sam = ['r-', 'o-.', 'g--', 'b-.', 'p:']plt.plot(angles,data,'o-',linewidth=1.5,alpha=0.2) #连线,画出不规则六边形plt.fill(angles,data,alpha=0.15) legend=plt.legend(data_labels,loc=(0.94,0.80),labelspacing=0.1)plt.setp(legend.get_texts(),fontsize='small') plt.grid(True)plt.ylim(0, 10)plt.show()plt.savefig(r'C:\Users\Administrator\Desktop\p1.png',dpi=500)
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年03月24日 13时41分16秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Vue实现选项卡功能
2021-05-07
清除默认样式
2021-05-07
数据结构——链表
2021-05-07
[数据结构与算法]链表逆置与遍历
2021-05-07
CommonJs
2021-05-07
ICMP网际控制报文协议
2021-05-07
[编程题]Course List for Student (25)
2021-05-07
【Python】面向对象,封装
2021-05-07
接口又是个啥?
2021-05-07
5.11 TEST1
2021-05-07
uni-app请求头中携带token
2021-05-07
常用的 Git 命令和小技巧(1)
2021-05-07
vue中接收后台的图片验证码并显示
2021-05-07
springboot入门(1)---整合MyBatis
2021-05-07
Vue入门学习笔记(1)
2021-05-07
ECharts——双向柱状图
2021-05-07
Vue——引进bootstrap
2021-05-07
Vue——引进ivew
2021-05-07
趣谈win10常用快捷键
2021-05-07