Matplotlib 如何从数据框绘制3D表面图/3D图形

Matplotlib 如何从数据框绘制3D表面图/3D图形

在数据分析和可视化过程中,绘制3D表面图或3D图形是常见的技能。Matplotlib是Python中最流行的可视化库之一,它提供了在数据框中绘制3D表面图和3D图形的功能。

本文将介绍如何使用Matplotlib在Python中从数据框绘制3D表面图和3D图形,并提供具体的示例以便于理解和学习。

阅读更多:Matplotlib 教程

准备工作

在开始之前,需要准备两个Python类库:pandas和mplot3d。pandas是一款数据分析库,在Python中广泛使用。mplot3d是matplotlib的一部分,它提供了3D绘图功能。

import pandas as pd
from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt
Python

3D表面图

3D表面图是一种用于可视化XYZ数据的图表类型。它通常由自变量x,y和z(或f(x,y))构成。

首先,我们需要生成一个3D数据框。假设我们有两个自变量(x和y)和一个因变量(z)。我们可以使用pandas的DataFrame函数生成一个包含x,y和z值的数据框。

x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))

data = pd.DataFrame({'x': X.flatten(), 'y': Y.flatten(), 'z': Z.flatten()})
Python

接下来,我们需要将数据点放置在3D坐标系中,并使用plot_surface函数生成图像。该函数的输入包括x,y和z数据,然后通过将参数cmap设置为颜色图来指定颜色。

fig = plt.figure()
ax = fig.add_subplot(projection='3d')

ax.plot_surface(X, Y, Z, cmap='viridis')
Python

我们可以通过添加其他参数来定制绘图,例如给轴标记,修改字体大小和设置z轴范围。

ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
plt.rcParams.update({'font.size': 14})

ax.set_zlim(-1, 1)

plt.show()
Python

您可以根据需要修改这些参数,以使图像更符合您的需求。最终,您应该能够得到一个漂亮的3D表面图像。以下是完整的代码示例:

import pandas as pd
from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))

data = pd.DataFrame({'x': X.flatten(), 'y': Y.flatten(), 'z': Z.flatten()})

fig = plt.figure()
ax = fig.add_subplot(projection='3d')

ax.plot_surface(X, Y, Z, cmap='viridis')

ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
plt.rcParams.update({'font.size': 14})

ax.set_zlim(-1, 1)

plt.show()
Python

3D图形

3D图形在视觉上与3D表面图相似,但是它们通常用于表达不同类型的数据。例如,您可以使用3D图形在自变量x,y和z中可视化分类数据。

假设我们有一个带有三个自变量(x,y和z)和一个因变量(class)的数据框。我们可以使用plot函数绘制数据点,然后使用scatter函数在3D坐标系中展示这些数据点。

x = np.random.randn(100)
y = np.random.randn(100)
z = np.random.randn(100)
labels = np.random.choice(['A', 'B', 'C'], size=100)

data = pd.DataFrame({'x': x, 'y': y, 'z': z, 'class': labels})

fig = plt.figure()
ax = fig.add_subplot(projection='3d')

ax.scatter(data['x'], data['y'], data['z'], c=data['class'], cmap='viridis')

ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
plt.rcParams.update({'font.size': 14})

plt.show()
Python

您可以根据需要修改这些参数,以使图像更符合您的需求。以下是完整的代码示例:

import pandas as pd
from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt

x = np.random.randn(100)
y = np.random.randn(100)
z = np.random.randn(100)
labels = np.random.choice(['A', 'B', 'C'], size=100)

data = pd.DataFrame({'x': x, 'y': y, 'z': z, 'class': labels})

fig = plt.figure()
ax = fig.add_subplot(projection='3d')

ax.scatter(data['x'], data['y'], data['z'], c=data['class'], cmap='viridis')

ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
plt.rcParams.update({'font.size': 14})

plt.show()
Python

总结

在本文中,我们介绍了如何使用Matplotlib在Python中从数据框绘制3D表面图和3D图形。我们使用pandas生成一个3D数据框,并使用mplot3d中的函数生成图形。通过修改不同的参数,我们可以微调图形以更好地呈现数据。这是一个基本的图表类型,它在数据分析中非常有用。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册