Python绘制三维图详解

利用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()

Python绘制三维图详解_第1张图片

你可能感兴趣的:(Python,python,numpy,开发语言)