Python如何制作雷达图

Python如何制作雷达图

Python如何制作雷达图

简介

雷达图又被称为蜘蛛图或极坐标图,它以一个原点为中心,通过多个等角度的放射线表示多个变量的数值,常用于多指标的比较和分析。Python提供了多个绘图库,如Matplotlib和Plotly,可以方便地制作出各种类型的雷达图。

1. Matplotlib绘制雷达图

Matplotlib是Python中常用的绘图库之一,它提供了丰富的绘图功能,包括绘制雷达图。

1.1 安装Matplotlib

在开始制作雷达图之前,需要先安装Matplotlib库。可以通过以下命令在终端或命令提示符中进行安装:

pip install matplotlib

1.2 示例:绘制基本雷达图

下面是一个简单的示例,展示如何使用Matplotlib绘制一个基本的雷达图。首先,导入需要的库:

import numpy as np
import matplotlib.pyplot as plt

然后,定义要绘制的数据。假设有5个指标,每个指标的取值范围为0到100,我们可以用一个列表表示:

labels = ['指标1', '指标2', '指标3', '指标4', '指标5']
values = [80, 65, 90, 75, 85]

接下来,计算出每个指标在雷达图上的角度,并将角度转换为弧度:

angles = np.linspace(0, 2 * np.pi, len(labels), endpoint=False).tolist()
angles += angles[:1]  # 闭合图形

然后,初始化图形并设置图像的大小:

fig = plt.figure(figsize=(6, 6))

接着,创建一个极坐标子图:

ax = fig.add_subplot(111, polar=True)

然后,绘制雷达图的轴线:

ax.plot(angles, values, 'o-', linewidth=2)
ax.fill(angles, values, alpha=0.25)

接下来,设置雷达图的标签:

ax.set_thetagrids(np.degrees(angles[:-1]), labels)

最后,显示雷达图:

plt.show()

运行上述代码,即可得到绘制的雷达图。

1.3 自定义雷达图样式

在Matplotlib中,我们可以通过设置不同的参数来自定义雷达图的样式。以下是一些常用的自定义方法:

  • linestyle:设置线条的样式,如’-‘表示实线,’–‘表示虚线等。
  • linewidth:设置线条的宽度。
  • marker:设置数据点的标记样式,如’o’表示圆圈,’s’表示正方形等。
  • markersize:设置数据点的大小。
  • color:设置线条和数据点的颜色。
  • alpha:设置线条和数据点的透明度。
  • label:设置线条和数据点的标签。

下面是一个完整的示例代码,展示如何自定义雷达图的样式:

import numpy as np
import matplotlib.pyplot as plt

labels = ['指标1', '指标2', '指标3', '指标4', '指标5']
values = [80, 65, 90, 75, 85]

angles = np.linspace(0, 2 * np.pi, len(labels), endpoint=False).tolist()
angles += angles[:1]  # 闭合图形

fig = plt.figure(figsize=(6, 6))
ax = fig.add_subplot(111, polar=True)

ax.plot(angles, values, linestyle='-', linewidth=2, marker='o', markersize=5, color='r', alpha=0.8, label='数据')

ax.fill(angles, values, alpha=0.25)

ax.set_thetagrids(np.degrees(angles[:-1]), labels)

plt.legend()
plt.show()

运行上述代码,可以看到绘制的雷达图具有自定义的样式。

2. Plotly绘制雷达图

Plotly是一个交互式数据可视化库,它可以生成基于Web的图表,包括雷达图。与Matplotlib不同,Plotly可以在Jupyter Notebook等环境中以交互方式显示图表。

2.1 安装Plotly

在开始制作雷达图之前,需要先安装Plotly库。可以通过以下命令在终端或命令提示符中进行安装:

pip install plotly

2.2 示例:绘制基本雷达图

下面是一个简单的示例,展示如何使用Plotly绘制一个基本的雷达图。首先,导入需要的库:

import plotly.graph_objs as go
import plotly.offline as offline

然后,定义要绘制的数据。假设有5个指标,每个指标的取值范围为0到100,我们可以用一个列表表示:

labels = ['指标1', '指标2', '指标3', '指标4', '指标5']
values = [80, 65, 90, 75, 85]

接下来,创建一个雷达图的数据对象:

data = [
    go.Scatterpolar(
        r=values,
        theta=labels,
        fill='toself',
    )
]

然后,创建一个布局对象:

layout = go.Layout(
    polar=dict(
        radialaxis=dict(
            visible=True,
            range=[0, 100],
        )
    ),
    showlegend=False
)

最后,使用offline.plot方法显示雷达图:

offline.plot(dict(data=data, layout=layout), filename='radar_chart.html')

运行上述代码,可以输出一个HTML文件,其中包含绘制的雷达图。

2.3 自定义雷达图样式

在Plotly中,我们可以通过设置不同的参数来自定义雷达图的样式。以下是一些常用的自定义方法:

  • mode:设置数据点的连接方式,如’markers’表示仅显示数据点,’lines’表示仅显示线条,’lines+markers’表示同时显示数据点和线条等。
  • fill:设置雷达图的填充方式,如’toself’表示自动补充成闭合图形,’none’表示不填充等。
  • line:设置线条的样式,如颜色、宽度等。
  • marker:设置数据点的样式,如颜色、大小等。

以下是一个完整的示例代码,展示如何自定义雷达图的样式:

import plotly.graph_objs as go
import plotly.offline as offline

labels = ['指标1', '指标2', '指标3', '指标4', '指标5']
values = [80, 65, 90, 75, 85]

data = [
    go.Scatterpolar(
        r=values,
        theta=labels,
        fill='toself',
        mode='markers',
        marker=dict(
            color='red',
            size=10,
            symbol='square'
        ),
        line=dict(
            color='blue',
            width=2
        )
    )
]

layout = go.Layout(
    polar=dict(
        radialaxis=dict(
            visible=True,
            range=[0, 100],
        )
    ),
    showlegend=False
)

offline.plot(dict(data=data, layout=layout), filename='radar_chart.html')

运行上述代码,可以看到绘制的雷达图具有自定义的样式。

结论

本文介绍了如何使用Python中的Matplotlib和Plotly库来制作雷达图。通过这两个库,可以根据自己的需求绘制出各种类型的雷达图,用于多指标的比较和分析。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程