利用Python绘制三维图
目标: 绘制图像 z 2 = x 2 + y 2 z^2 = x^2 + y^2 z2=x2+y2
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D #绘制3D图案
画曲面的第一步是就是要创建一个二维平面的网格,在Python当中,我们使用meshgrid()
函数,在matlab中也是这个函数哦
创建数据:首先创建x和y,它们的范围都是(-1,1)
x = np.linspace(-1,1,100)
y = np.linspace(-1,1,50)
然后调用numpy中的meshgrid函数,进行网格化操作。
x_,y_ = np.meshgrid(x,y,indexing='ij')
x_,y_返回网格数组,通过打印x_和y_的形状,可以看到x_,y_都是(100*50) 的二维数组,也就是数组x的长度乘以数组y的长度
print(x_.shape,y_.shape)
(100, 50) (100, 50)
网格化统一了X,Y的维度,数组运算时,涉及更多数据,范围更广
z_ = x_**2 + y_**2
绘制图形
plt.figure():自定义图像
.add_subplot():添加子图
.plot_surface():绘制曲面
.colorbar():添加颜色棒
fig = plt.figure(figsize=(12,8),facecolor='white') #创建图片
sub = fig.add_subplot(111,projection='3d')# 添加子图,
surf = sub.plot_surface(x_,y_,z_,cmap=plt.cm.brg) #绘制曲面,并设置颜色cmap
cb = fig.colorbar(surf,shrink=0.8,aspect=15) #设置颜色棒
sub.set_xlabel(r"$x$")
sub.set_ylabel(r"$y$")
sub.set_zlabel(r"$z$")
plt.show()
完整代码
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D #绘制3D图案
x = np.linspace(-1,1,100)
y = np.linspace(-1,1,50)
x_,y_ = np.meshgrid(x,y,indexing='ij')
z_ = x_**2 + y_**2
fig = plt.figure(figsize=(12,8),facecolor='white') #创建图片
sub = fig.add_subplot(111,projection='3d')# 添加子图,
surf = sub.plot_surface(x_,y_,z_,cmap=plt.cm.brg) #绘制曲面,并设置颜色cmap
cb = fig.colorbar(surf,shrink=0.8,aspect=15) #设置颜色棒
sub.set_xlabel(r"$x$")
sub.set_ylabel(r"$y$")
sub.set_zlabel(r"$z$")
plt.show()