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绘制出美观且信息丰富的雷达图。

上一篇:Python数据分析入门(二十三):绘图分析——Figure容器
下一篇:Python数据分析入门(二十一):数据可视化之绘制箱线图

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2025年04月30日 04时52分45秒