用 Python 做雷达图

用 Python 做雷达图雷达图,也称为蛛网图或星形图,是一种以同心多边形将几个变量的数据绘制在同一张图表上,以便于进行比较和分析的数据可视化方式。Python提供了多个库来绘制雷达图,包括Matplotlib、Bokeh和Plotly等。

一、Python雷达图代码

雷达图,也称为蛛网图或星形图,是一种以同心多边形将几个变量的数据绘制在同一张图表上,以便于进行比较和分析的数据可视化方式。Python提供了多个库来绘制雷达图,包括Matplotlib、Bokeh和Plotly等。

 import numpy as np import matplotlib.pyplot as plt # 设置数据标签 categories = ['人力资源', '营销', '技术', '财务', '管理'] N = len(categories) # 设置数据值 vals = [4, 3, 2, 1, 5] vals += vals[:1] # 计算每个角的弧度 angles = [n / float(N) * 2 * np.pi for n in range(N)] angles += angles[:1] # 绘制多边形,连接数据点 ax = plt.subplot(111, polar=True) plt.xticks(angles[:-1], categories, color='grey', size=8) ax.plot(angles, vals, linewidth=1, linestyle='solid') ax.fill(angles, vals, 'b', alpha=0.1) plt.show() 

上述代码使用Matplotlib库绘制了一个简单的雷达图,该图表显示了几个变量的数据值,包括人力资源、营销、技术、财务和管理。可以看到,Python的绘图库非常容易使用,对于任意的数据可视化任务都非常有用。

二、Python画雷达图代码

除了使用Matplotlib库,Python还提供了其他库来绘制雷达图。下面是一个使用Bokeh库编写的绘制雷达图的示例代码:

from math import pi
import pandas as pd
from bokeh.io import output_file, show
from bokeh.plotting import figure
from bokeh.models import ColumnDataSource

# 创建数据集
data = {'angles': [0, pi/2, pi, 3*pi/2, 2*pi],
        'values': [1.2, 2.5, 3.7, 0.8, 2.1]}
df = pd.DataFrame(data)

# 添加第一个角度值以完成闭环
df = pd.concat([df, pd.DataFrame({'angles':[df['angles'].iloc[0]],
                                   'values':[df['values'].iloc[0]]})])

# 创建Figure对象
p = figure(title="雷达图", x_range=(-1.2, 1.2), y_range=(-1.2, 1.2),
           plot_width=400, plot_height=400)

# 绘制雷达图
p.patch(x=df['values']*np.cos(df['angles']),
        y=df['values']*np.sin(df['angles']),
        fill_alpha=0.4, line_width=2)

output_file("radar.html")
show(p)

该示例代码使用Bokeh库来绘制雷达图,该图表显示了一组固定半径的数据点,它们绕着中心点分布。这个示例代码中的数据集是一个直接使用Python数据结构创建的小数据集,但是实际上可以使用各种数据存储方式来创建Bokeh数据源。

三、Python绘制雷达图函数

将绘制雷达图的代码封装成一个函数可以很方便地重复使用,下面是一个可以在Python中绘制雷达图的简单函数:

 import matplotlib.pyplot as plt import numpy as np def radar_chart(categories, data, title): # 计算数据值并重复第一个数据点以闭环 N = len(categories) data = np.concatenate((data,[data[0]])) angles = np.linspace(0, 2*np.pi, N, endpoint=False) angles = np.concatenate((angles,[angles[0]])) # 绘制多边形 fig = plt.figure() ax = fig.add_subplot(111, polar=True) ax.plot(angles, data, 'o-', linewidth=2) ax.fill(angles, data, alpha=0.25) ax.set_thetagrids(angles * 180/np.pi, categories) plt.title(title, va='bottom') # 显示结果 plt.show() 

上述函数使用Matplotlib库绘制雷达图,参数categories表示分类变量,data表示每个分类变量对应的数据,title表示图表的标题。通过计算数据值和角度值,并且连接数据点来绘制多边形,最后添加类别标签,这个函数可以方便地绘制可视化效果良好的雷达图。

四、Python雷达图详解

雷达图是一种多维数据可视化技术,可以用于显示多个变量之间的关系及其对整体的贡献率。它由多个同心多边形组成,每个多边形代表一个变量,并且大小和数值成正比。同一张图表上的每个多边形通过连接每个角上的数据点来绘制。数据点的位置由所对应的几个变量的数值决定。

使用Python绘制雷达图的主要步骤如下:

  • 准备数据:准备需要绘制的数据,包括类别变量、数值、标题等。
  • 计算角度和数据值:计算每个角的角度和每个变量的数据值。
  • 绘制多边形:使用Matplotlib、Bokeh或Plotly等库来绘制雷达图。

Python的Matplotlib库提供了一个方便的函数来绘制雷达图,即matplotlib.pyplot.polar()。这个函数使用极坐标系绘制出同心多边形。由于雷达图的数据通常是非负的,因此可以使用填充区域来表示数据。可以使用matplotlib.pyplot.fill()函数来实现这一点。

Bokeh和Plotly等数据可视化库也支持雷达图的绘制,它们的优点是带有交互式和动态效果,能够更好地展示数据和突出主题。Bokeh库使用Python作为绘图语言,提供了一个图表对象,使得用户可以在Web浏览器中交互地探索数据。Plotly库则是一个交互式的绘图库,支持在线绘图和展示,支持多种绘图类型,包括2D和3D可视化。

五、Python生成雷达图

Python提供了多个库来生成雷达图,包括Matplotlib、Bokeh和Plotly等。这些库都具有很高的可自定义性,可以满足不同用户的需求。

使用Python绘制雷达图的最佳方法取决于数据类型和要表现的信息。对于绘制简单的雷达图,可以使用Matplotlib库提供的简便函数。如果需要将雷达图嵌入Python Web应用程序中或者需要创造更加丰富复杂的数据可视化效果,则需要使用先进的数据可视化工具。

最后,Python的雷达图表现出了数据的维度和变化,很好的解释了数据之间的关系。Python通过绘图库快速可靠的提供自己能力,对于数据可视化工作者来说,它是一个强大而方便的工具,可以用各种绘图库实现数据可视化的需求。

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

(0)
上一篇 2024-08-23
下一篇 2024-08-23

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注