数据可视化——绘制雷达图

绘制雷达图

        使用polar()绘制雷达图

使用pyplot的polar()函数可以快速绘制雷达图,polar()函数的语法格式如下所示:

polar(theta, r, **kwargs)

该函数常用参数的含义如下:

theta :表示每个数据点所在射线与极径的夹角。

r :表示每个数据点到原点的距离。

更多参数含义可进入网址查看

matplotlib.pyplot.polar — Matplotlib 3.8.0 documentationicon-default.png?t=N7T8https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.polar.html

下面用代码绘制霍兰德职业兴趣测试雷达图

 

代码如下:

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
# 准备数据
dim_num = 6 
data = np.array([[0.40, 0.32, 0.35, 0.30, 0.30, 0.88],
                 [0.85, 0.35, 0.30, 0.40, 0.40, 0.30],
                 [0.43, 0.89, 0.30, 0.28, 0.22, 0.30],
                 [0.30, 0.25, 0.48, 0.85, 0.45, 0.40],
                 [0.20, 0.38, 0.87, 0.45, 0.32, 0.28],
                 [0.34, 0.31, 0.38, 0.40, 0.92, 0.28]])
angles = np.linspace(0, 2 * np.pi, dim_num, endpoint=False)
angles = np.concatenate((angles, [angles[0]]))
data = np.concatenate((data, [data[0]]))
#维度标签
radar_labels = ['研究型(I)', '艺术型(A)', '社会型(S)',
                 '企业型(E)', '传统型(C)', '现实型(R)']
radar_labels = np.concatenate((radar_labels, [radar_labels[0]]))
#绘制雷达图
plt.polar(angles, data)
#设置极坐标的标签
plt.thetagrids(angles * 180/np.pi, labels=radar_labels)
#填充多边形
plt.fill(angles, data, alpha=0.25)
plt.show()

运行结果如下:

在此基础上增加多组数据,条件如下:

# matplotlib中文网 https://www.matplotlib.org.cn/intro/

# 需求一: 请把B同学和C同学的成绩用雷达图展示在同一个绘图区域,并填充不同颜色和透明度
#          (只允许调用一次plt.polar和plt.fill)


# B同学成绩:  '数学','英语','线代','爬虫','数据可视化','吃喝玩乐'  --->   91,88,83,72,78,26
# C同学成绩:  '数学','英语','线代','爬虫','数据可视化','吃喝玩乐'  --->   81,78,85,76,74,36

import numpy as np
import matplotlib.pyplot as plt

# 0.设置中文
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False

# 1.准备大数据专业三位同学各科目成绩
dim_num = 6
radians = np.linspace(0, 2 * np.pi, dim_num, endpoint=False)
radians = np.concatenate((radians, [radians[0]]))  

# A同学: '数学','英语','线代','爬虫','数据可视化','吃喝玩乐'  --->   41,38,36,62,68,100
score_a = np.array([41,38,36,62,68,100])
score_a = np.concatenate((score_a, [score_a[0]]))  

# B同学:'数学','英语','线代','爬虫','数据可视化','吃喝玩乐'  --->   91,88,83,72,78,26

# C同学:'数学','英语','线代','爬虫','数据可视化','吃喝玩乐'  --->   81,78,85,76,74,36




# 2.绘制多边形(雷达图) 
#——————————————————————————————————————————    
#————————————  


# 3.设置维度标签
radar_labels = ['数学','英语','线代','爬虫','数据可视化','吃喝玩乐']
radar_labels = np.concatenate((radar_labels, [radar_labels[0]])) # 拼接一下,构成闭环 (此处可以不拼接,为了统一而已)

# 4.设置极坐标的标签
angles = radians * 180/np.pi  # 弧度转角度
plt.thetagrids(angles, labels=radar_labels) # 设置新的刻度标签

# 5.填充多边形
#——————————————————————————————————————————    

#——————————————————————————————————————————  

# 6.展示图表
plt.show()

输入代码,代码如下:

# matplotlib中文网 https://www.matplotlib.org.cn/intro/

# 需求一: 请把B同学和C同学的成绩用雷达图展示在同一个绘图区域,并填充不同颜色和透明度
#          (只允许调用一次plt.polar和plt.fill)


# B同学成绩:  '数学','英语','线代','爬虫','数据可视化','吃喝玩乐'  --->   91,88,83,72,78,26
# C同学成绩:  '数学','英语','线代','爬虫','数据可视化','吃喝玩乐'  --->   81,78,85,76,74,36

import numpy as np
import matplotlib.pyplot as plt

# 0.设置中文
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False

# 1.准备大数据专业三位同学各科目成绩
dim_num = 6
radians = np.linspace(0, 2 * np.pi, dim_num, endpoint=False)
radians = np.concatenate((radians, [radians[0]]))  

# A同学: '数学','英语','线代','爬虫','数据可视化','吃喝玩乐'  --->   41,38,36,62,68,100
score_a = np.array([41,38,36,62,68,100])
score_a = np.concatenate((score_a, [score_a[0]]))  

# B同学:'数学','英语','线代','爬虫','数据可视化','吃喝玩乐'  --->   91,88,83,72,78,26
score_b = np.array([91,88,83,72,78,26])
score_b = np.concatenate((score_b, [score_b[0]]))
# C同学:'数学','英语','线代','爬虫','数据可视化','吃喝玩乐'  --->   81,78,85,76,74,36
score_c = np.array([81,78,85,76,74,36])
score_c = np.concatenate((score_c, [score_c[0]]))



# 2.绘制多边形(雷达图) 
#——————————————————————————————————————————    
plt.polar(radians, score_a, radians, score_b, radians, score_c)
# ——————————————————————————————————————————


# 3.设置维度标签
radar_labels = ['数学','英语','线代','爬虫','数据可视化','吃喝玩乐']
radar_labels = np.concatenate((radar_labels, [radar_labels[0]])) # 拼接一下,构成闭环 (此处可以不拼接,为了统一而已)

# 4.设置极坐标的标签
angles = radians * 180/np.pi  # 弧度转角度
plt.thetagrids(angles, labels=radar_labels) # 设置新的刻度标签

# 5.填充多边形
#——————————————————————————————————————————    
tables = plt.fill(radians, score_a, radians, score_b, radians, score_c, alpha=0.25)
# ——————————————————————————————————————————

# 6.展示图表
plt.show()

运行结果如下:

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ECharts 是一款由百度开发的、基于 JavaScript 的开源数据可视化库,它提供了丰富的图表类型和高度的可定制性,以帮助开发者轻松创建交互性强、美观且响应迅速的数据可视化界面。ECharts 支持在各种现代浏览器(包括移动设备上的浏览器)以及部分旧版浏览器(如 IE8/9/10/11)中运行,其底层依赖轻量级矢量图形库 ZRender,确保了图表渲染的高效性和跨平台兼容性。 以下是一些关于使用 ECharts 进行数据可视化的关键特性、图表类型和基本使用步骤: ### 关键特性 1. **开源免费**:ECharts 是开源软件,可以免费用于个人和商业项目,无需支付任何费用。 2. **广泛兼容**:支持多种浏览器环境,包括但不限于 Chrome、Firefox、Safari 和 Internet Explorer 系列,保证在不同设备和操作系统上的良好表现。 3. **丰富图表类型**:包括但不限于折线图、柱状图、散点图、饼图、K线图、盒形图、地图、热力图、线图、关系图、treemap、旭日图、平行坐标、漏斗图、仪表盘等,以及三维可视化组件(通过 ECharts GL 扩展)。 4. **交互性强**:图表支持鼠标悬停提示、数据区域缩放、图表联动、图表堆叠、数据过滤、图例开关等多种交互功能,提升用户对数据的探索和理解能力。 5. **个性化定制**:提供详细的配置选项,允许用户自定义图表的颜色、字体、网格线、图例、tooltip、轴标签、数据标签、动画效果等,以满足特定设计需求和品牌风格。 6. **数据更新动态渲染**:能够实时接收新数据并动态更新图表,适用于数据流或实时监控场景。 7. **扩展性**:除了核心库外,有 ECharts GL 用于三维和大规模地理数据可视化,以及周边生态工具(如 ECharts-GL、ZRender)增强其功能和适用范围。 ### 图表类型 ECharts 提供的图表类型涵盖了数据分析和展示的常见需求,包括: - **基础图表**:折线图、柱状图、散点图、饼图、K线图 - **统计图表**:盒形图 - **地理图表**:地图、热力图、线图 - **关系图表**:关系图、treemap、旭日图 - **多维数据可视化**:平行坐标 - **BI图表**:漏斗图、仪表盘 此外,ECharts 支持图表间的混搭,即在一个图表容器内同时展现多种图表类型,以对比或关联不同数据维度。 ### 使用步骤 使用 ECharts 进行数据可视化的一般步骤如下: #### 1. 引入 ECharts 库 在 HTML 文件中通过 `<script>` 标签引入 ECharts 的核心文件: ```html <script src="https://cdn.jsdelivr.net/npm/echarts@版本号/dist/echarts.min.js"></script> ``` 确保替换 `版本号` 为所需的 ECharts 版本。 #### 2. 准备 DOM 容器 在页面上创建一个用于承

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值