【python】【matplotlib】用python绘制三维视图和三视图

效果在这里插入图片描述

代码

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

# 生成三维坐标数据
x = np.linspace(-1, 1, 100)
y = np.linspace(-1, 1, 100)
X, Y = np.meshgrid(x, y)
Z = X**2 + Y**2

# 创建figure
fig = plt.figure(figsize=(8, 8))

# 绘制三维坐标图
ax1 = fig.add_subplot(221, projection='3d')
ax1.plot_surface(X, Y, Z)
ax1.set_xlabel('X')
ax1.set_ylabel('Y')
ax1.set_zlabel('Z')

# 设定三维视角
ax1.view_init(30, 45)

# 设定轴标签和轴限制
ax1.set_xlabel('X')
ax1.set_ylabel('Y')
ax1.set_zlabel('Z')
ax1.set_xlim(-1, 1)
ax1.set_ylim(-1, 1)
ax1.set_zlim(0, 2)

# 绘制三个侧视图
ax2 = fig.add_subplot(222)
ax2.contour(X, Y, Z)
ax2.set_xlabel('X')
ax2.set_ylabel('Y')
ax2.set_title('XY Plane')

ax3 = fig.add_subplot(223)
ax3.contour(Y, Z, X)
ax3.set_xlabel('Y')
ax3.set_ylabel('Z')
ax3.set_title('YZ Plane')

ax4 = fig.add_subplot(224)
ax4.contour(X, Z, Y)
ax4.set_xlabel('X')
ax4.set_ylabel('Z')
ax4.set_title('XZ Plane')

plt.show()

解析

这段代码演示了如何使用Matplotlib和mplot3d模块生成一个三维坐标图和三个侧视图。以下是代码的解释:

  1. 导入必要的模块:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

该代码导入了NumPy模块(用于生成坐标数据),Matplotlib模块(用于绘制图形)和mplot3d模块(用于绘制三维坐标图)。

  1. 生成三维坐标数据:
x = np.linspace(-1, 1, 100)
y = np.linspace(-1, 1, 100)
X, Y = np.meshgrid(x, y)
Z = X**2 + Y**2

该代码生成了一个100x100的网格,代表了在x和y范围内的所有可能的坐标值。然后,我们使用这些坐标值计算每个点的z值,这里我们是计算每个点的z值等于该点的x和y的平方和。

  1. 创建figure:
fig = plt.figure(figsize=(8, 8))

该代码创建了一个名为fig的figure,并将其大小设置为8x8英寸。

  1. 绘制三维坐标图:
ax1 = fig.add_subplot(221, projection='3d')
ax1.plot_surface(X, Y, Z)
ax1.set_xlabel('X')
ax1.set_ylabel('Y')
ax1.set_zlabel('Z')

该代码使用add_subplot方法在figure中创建一个名为ax1的子图,并将其类型设置为三维坐标图。然后,我们使用plot_surface方法绘制三维坐标图,并使用set_xlabel、set_ylabel和set_zlabel方法设置轴标签。

  1. 设定三维视角:
ax1.view_init(30, 45)

该代码使用view_init方法设置三维视角,这里我们将视角设置为30度的俯角和45度的方位角。

  1. 设定轴标签和轴限制:
ax1.set_xlabel('X')
ax1.set_ylabel('Y')
ax1.set_zlabel('Z')
ax1.set_xlim(-1, 1)
ax1.set_ylim(-1, 1)
ax1.set_zlim(0, 2)

该代码使用set_xlabel、set_ylabel和set_zlabel方法设置轴标签,并使用set_xlim、set_ylim和set_zlim方法设置轴限制。

  1. 绘制三个侧视图:
ax2 = fig.add_subplot(222)
ax2.contour(X, Y, Z)
ax2.set_xlabel('X')
ax2.set_ylabel('Y')
ax2.set_title('XY Plane')

ax3 = fig.add_subplot(223)
ax3.contour(Y, Z, X)
ax3.set_xlabel('Y')
ax3.set_ylabel('Z')
ax3.set_title('YZ Plane')

ax4 = fig.add_subplot(224)
ax4.contour(X, Z, Y)
ax4.set_xlabel('X')
ax4.set_ylabel('Z')
ax4.set_title('XZ Plane')

该代码使用add_subplot方法在figure中创建三个名为ax2、ax3和ax4的子图,并使用contour方法绘制三个侧视图(XY平面、YZ平面和XZ平面)。然后,我们使用set_xlabel、set_ylabel和set_title方法设置轴标签和子图标题。

  1. 显示图形:
plt.show()

该代码使用show方法显示所有图形。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hmywillstronger

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值