透视Matplotlib核心功能和工具包 - 绘制3D图形

线图

在此,我们将学习如何创建3D线图。 它类似于2D等效折线图,并且2D折线图的许多属性都结转到3D。

我们将在相同的轴上绘制凹凸曲线,并从不同角度查看它们,例如平行视图,顶视图以及围绕z轴的旋转。

导入所需库:

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

步骤细节:

  • 准备用于x,y和z轴坐标的数据:
x = np.linspace(-5, 5, 25)
y = np.linspace(-5, 5, 25)
z = x**2 + y**2
z1 = 1 - (x**2 + y**2)
  • 定义一个函数来绘制图形并设置其属性:
def plot_graph(axes, xlabel, ylabel, zlabel, title, elevation, rotation):
   axes.plot3D(x, y, z, label='concave')
   axes.plot(x, y, z1, label='convex')
   axes.view_init(elev=elevation, azim=rotation)
   axes.set_xlabel(xlabel)
   axes.set_ylabel(ylabel)
   axes.set_zlabel(zlabel)
   axes.set_title(title)
   axes.legend(loc='best')
  • 定义用于3D绘图的图形和轴ax1:
fig = plt.figure(figsize=(15,9))
ax1 = fig.add_subplot(231, projection='3d')
  • 使用默认仰角和旋转在ax1上绘制曲线:
plot_graph(ax1, 'X', 'Y', 'Z', 'default view', None, None)
  • 定义第二个轴ax2,并以0度仰角和默认方位角对其进行绘制:
ax2 = fig.add_subplot(232, projection='3d')
plot_graph(ax2, 'X', 'Y', 'Z', 'elevation angle = 0,\n azimuth angle=None', 0, None)
  • 定义第三个轴ax3,并以90度仰角和默认方位角对其进行绘制:
ax3 = fig.add_subplot(233, projection='3d')
plot_graph(ax3, 'X', 'Y', ' ', 'elevation angle = 90,\n azimuth angle=None', 90, None)
ax3.set_zticks([])
  • 定义第四个轴ax4,并使用默认仰角和-30度方位角进行绘制:
ax4 = fig.add_subplot(234, projection='3d')
plot_graph(ax4, 'X', 'Y', 'Z', 'elevation angle = None,\n azimuth angle=-30', None, -30)
  • 定义第五个轴ax5,并使用默认仰角和30度方位角对其进行绘制:
ax5 = fig.add_subplot(235, projection='3d')
plot_graph(ax5, 'X', 'Y', 'Z', 'elevation angle = None,\n azimuth 
        angle=30', None, 30)
  • 调整绘图之间的空间,并将其显示在屏幕上:
plt.tight_layout(w_pad=5)
plt.show()

分解代码

  • x = np.linspace(−5, 5, 25)创建一个具有25个点的数组,这些点在-5和5之间等距分布,并且将z和z1定义为x和y的函数
  • def plot_graph(axes, xlabel, ylabel, zlabel, title, elevation, rotation):是绘制具有给定属性的图的函数:
    • 轴指定要在其上绘制图形的轴。
    • xlabel,ylabel和zlabel分别为x,y和z轴指定标签。
    • 标题指定图的标题。
    • 仰角指定相对于XY平面的视角:0表示平行于XY平面,90表示俯视图。
    • 旋转指定在z轴上旋转的绘图的视图。
    • 高度和旋转度均以度为单位。
    • axes.plot3D(x, y, z, label=‘concave’)与2D线图语法相似,除了我们还包括z轴。 您也可以使用axes.plot()代替axes.plot3D(),就像我们对凸曲线所做的那样。 大多数其他地块也是如此,但并非所有情况都如此。
    • axes.view_init(elev=elevation, azim=rotation)指定绘图出现时的视图。
  • ax1 = fig.add_subplot(231, projection=‘3d’)向图中添加一个轴,该轴的布局指定为2 x 3网格:
    • projection='3d’指定它是3D轴,并在其上绘制带有三个尺寸的图形。 这是2D和3D图形语法之间的主要区别。
  • 在ax1上,我们以默认仰角和旋转角度绘制图表。
  • 在ax2到ax4上,我们绘制了具有不同仰角和旋转角度的相同图形,以查看其视图的差异。

在执行前面的代码时,您应该在屏幕上看到以下图形和绘图:

图略

散点图

详情参阅 - 亚图跨际

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值