Matplotlib绘制雷达图和三维图的示例代码

  • Post category:Python

以下是关于Matplotlib绘制雷达图和三维图的完整攻略,包括两个示例。

绘制雷达图

雷达图也称为极坐标图,用于展示多个变量之间的关系。Matplotlib提供了matplotlib.pyplot.polar函数用于绘制雷达图。以下是绘制雷达图的示例代码:

import numpy as np
import matplotlib.pyplot as plt

# 数据
categories = ['A', 'B', 'C', 'D', 'E']
values = [4, 3, 2, 5, 1]

# 计算角度
N = len(categories)
angles = [i / float(N) * 2 * np.pi for i in range(N)]
angles += angles[:1]

# 绘图
fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})
ax.plot(angles, values, 'o-', linewidth=2)
ax.fill(angles, values, alpha=0.25)
ax.set_thetagrids(np.degrees(angles), categories)
ax.set_title('Radar Chart', fontsize=20)
plt.show()

上面的代码使用了matplotlib.pyplot.polar函数绘制了一个简单的雷达图。首先定义了数据categoriesvalues,然后计算了每个变量对应的度angles。接着使用ax.plot函数绘制了雷达图的线条,使用ax.fill函数填充了雷达图的区域。最后使用ax.set_thetagrids函数设置了刻度标签和ax.set_title函数设置了图表标题。

以下是另一个绘制雷达图的示例代码,展示如何绘制多个数据系列的雷达图:

import numpy as np
import matplotlib.pyplot as plt

# 数据
categories = ['A', 'B', 'C', 'D', 'E']
values1 = [4, 3, 2, 5, 1]
values2 = [2, 5, 1, 4, 3]

# 计算角度
N = len(categories)
angles = [i / float(N) * 2 * np.pi for i in range(N)]
angles += angles[:1]

# 绘图
fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})
ax.plot(angles, values1, 'o-', linewidth=2, label='Series 1')
ax.fill(angles, values1, alpha=0.25)
ax.plot(angles, values2, 'o-', linewidth=2, label='Series 2')
ax.fill(angles, values2, alpha=0.25)
ax.set_thetagrids(np.degrees(angles), categories)
ax.legend(loc='upper right')
ax.set_title('Radar Chart', fontsize=20)
plt.show()

上面的代码在第一个示例的基础上增加了一个数据系列values2,使用ax.plot函数绘制了两个数据系列的雷达图使用ax.legend函数添加了图例。

绘制三维图

Matplotlib也支持绘制三维图,包括散点图、曲面、等高线图等。以下是绘制三维散点图和曲面图的示例代码:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# 生成数据
np.random.seed(1)
n = 100
x = np.random.rand(n)
y = np.random.rand(n)
z = np.random.rand(n)

# 绘制三维散点图
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(x, y, z, c='r', marker='o')
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
plt.show()

# 绘制三维曲面图
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
X, Y = np.meshgrid(np.arange(-1, 1, 0.1), np.arange(-1, 1, 0.1))
Z = np.sin(np.sqrt(X**2 + Y**2))
ax.plot_surface(X, Y, Z, cmap='coolwarm')
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
plt.show()

上面的代码使用了mpl_toolkits.mplot3d模块中的Axes3D类绘制了三维散点图和曲面图。在绘制三维散点图时,使用ax.scatter函数绘制了散点图,并使用ax.set_xlabel、ax.set_ylabelax.set_zlabel函数设置了坐标轴标签。在绘制三维曲面图时,使用np.meshgrid函数了网格点坐标,使用ax.plot_surface函数绘制了曲面图,并使用ax.set_xlabelax.set_ylabelax.set_zlabel`函数设置了坐标轴标签。

以上是使用Matplotlib绘制雷图和三维图的示例代码和详细说明。在实际使用中,可以根据需要调整参数和样式,绘制出更加美和有效的图表。