
Python数据分析入门(二十二):数据可视化之绘制雷达图
发布日期:2021-05-17 02:16:25
浏览次数:18
分类:精选文章
本文共 2552 字,大约阅读时间需要 8 分钟。
雷达图,又被称为蜘蛛网图,用于展示多个维度的数据强弱情况。它特别适合分析如英雄联盟中的英雄属性(如法术伤害、物理防御等)或企业在不同业务领域的投入情况等。
在matplotlib中,plt.polar函数可用于绘制雷达图。这与常规的plt.plot函数使用方式非常相似,但需要注意的是,x轴的值应以弧度表示(0到2π即360度为一周)。以下是一个基本的代码示例:
properties = ['输出', 'KDA', '发育', '团战', '生存']values = [40, 91, 44, 90, 95, 40]theta = np.linspace(0, np.pi*2, 6)plt.polar(theta, values)plt.xticks(theta, properties)plt.fill(theta, values)
这段代码会生成一个与实际雷达图效果差不多的输出图表。其中有几个需要注意的点:由于polar函数不会自动闭合路径,所以需要在theta数组和values数组的末尾重复添加起始点的值(通常是0),以确保绘制的线条能够闭合。此外,如果希望雷达图的内部区域填充颜色,可以通过调用fill函数来实现。
在多数情况下,特别是需要展示多个相关数据系列时,使用子图功能会更加实用。例如,可以将结论同一变量的不同维度数据以不同颜色或图案展示,可以通过以下方式实现:
properties = ['输出', 'KDA', '发育', '团战', '生存']values = [40, 91, 44, 90, 95, 40]theta = np.linspace(0, np.pi*2, 6)# 使用plt.subplot创建子图,并指定极坐标类型fig, axes = plt.subplots(1, 1, subplot_kw={'projection': 'polar'})axes.plot(theta, values)axes.fill(theta, values)
或者,如果需要同时展示多个变量的数据,可以采用以下方式:
properties = ['输出', 'KDA', '发育', '团战', '生存']values = [40, 91, 44, 90, 95, 40]theta = np.linspace(0, np.pi*2, 6)# 创建包含子图的主图形main_figure, axes = plt.subplots(2, 2, figsize=(10, 16))# 绘制第一个子图axes[0, 0].plot(theta, [40, 80, 50, 60, 70, 40], 'b', linewidth=2, label='输血')axes[0, 0].fill(theta, [40, 80, 50, 60, 70, 40], 'blue')axes[0, 0].set_xticks(theta)axes[0, 0].set_xticklabels(properties[0:], weight='bold', fontsize=12)axes[0, 0].set_title('输出', fontsize=14, pad=0.1)# 绘制第二个子图axes[0, 1].plot(theta, [91, 25, 84, 86, 81, 91], 'r', linewidth=2, label='KDA')axes[0, 1].fill(theta, [91, 25, 84, 86, 81, 91], 'red')axes[0, 1].set_xticks(theta)axes[0, 1].set_xticklabels(properties[0:], weight='bold', fontsize=12)axes[0, 1].set_title('KDA', fontsize=14, pad=0.1)# 绘制第三个子图axes[1, 0].plot(theta, [44, 93, 76, 82, 62, 44], 'g', linewidth=2, label='发育')axes[1, 0].fill(theta, [44, 93, 76, 82, 62, 44], 'green')axes[1, 0].set_xticks(theta)axes[1, 0].set_xticklabels(properties[0:], weight='bold', fontsize=12)axes[1, 0].set_title('发育', fontsize=14, pad=0.1)# 绘制第四个子图axes[1, 1].plot(theta, [90, 17, 88, 96, 89, 90], 'y', linewidth=2, label='团战')axes[1, 1].fill(theta, [90, 17, 88, 96, 89, 90], 'yellow')axes[1, 1].set_xticks(theta)axes[1, 1].set_xticklabels(properties[0:], weight='bold', fontsize=12)axes[1, 1].set_title('团战', fontsize=14, pad=0.1)# 调整所有子图的表格外观for ax in axes: ax.set_xlabel('') ax.set grid=True, which='rectangular') ax.grid(which='minor', alpha=0.3)plt.tight_layout()plt.subplots_adjust(hspace=0.2)plt.show()
在实际应用中,可以根据具体需求调整颜色、线条宽度和填充优化雷达图的视觉效果。通过以上代码示例和解释,教师可以清晰地理解如何利用matplotlib绘制出美观且信息丰富的雷达图。
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年04月30日 04时52分45秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Metasploit Framework中最全show命令及使用
2025-04-13
Metasploit GUI图形界面使用
2025-04-13
Metasploit SCADA渗透测试实战
2025-04-13
Metasploit SQL注入漏洞渗透测试实战
2025-04-13
Metasploit Web应用程序漏洞利用实战
2025-04-13
Metasploit Web服务器渗透测试实战
2025-04-13
Metasploit Web认证渗透测试实战
2025-04-13
Metasploit Windows AD渗透测试实战
2025-04-13
Metasploit 信息收集实战
2025-04-13
Metasploit 命令注入漏洞渗透测试实战
2025-04-13
Metasploit 客户端漏洞利用实战
2025-04-13
Metasploit 文件上传漏洞渗透测试实战
2025-04-13
Metasploit 文件包含与跨站请求伪造渗透测试实战
2025-04-13
Metasploit 渗透测试框架快速入门
2025-04-13
Meta最新视频生成工具:emu video技术报告解读
2025-04-13
MFC CEdit改变字体大小的方法
2025-04-13
MFC 打印预览 映射模式 坐标变换
2025-04-13
MFC不规则窗体
2025-04-13
MFC之处理消息映射的步骤...
2025-04-13
MFC对话框屏幕居中
2025-04-14