python之matplotlib绘制函数z=x^2+y^2三维图

绘制三维图入门:Z=X^2 + Y^2
步骤:
1.先绘制出三维坐标
2.定义函数表达式
3.绘制三维图像

1.先绘制出三维坐标

from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D  #此模块并非不没有作用,如果缺少了会/
#引起三维坐标的创建报出异常: ValueError: Unknown projection '3d

fig = plt.figure()
ax1 = plt.axes(projection="3d")

plt.show()

在这里插入图片描述

2.定义函数表达式

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

fig = plt.figure()
ax1 = plt.axes(projection="3d")

x = np.arange(-5,5,0.1)
y = np.arange(-5,5,0.1)
Z = x**2+y**2

ax1.plot3D(x,y,Z,"gray")
plt.show()

在这里插入图片描述
3.绘制三维图像

问题:我想绘制的是三维图像,而不是一条曲线,因此我查找原因,发现三维图像是需要网格数据,而我只定义了一个二维数据,因此只显示的为一条曲线,于是我在代码中添加网络数据采集函数(X,Y = np.meshgrid(x,y)),最终得以解决。
meshgrid函数介绍: meshgrid函数生成绘制3D图形所需的网格数据。在计算机中进行绘图操作时, 需要一些采样点,然后根据这些采样点来绘制出整个图形。在进行3D绘图操作时,涉及到x、y、z三组数据,而x、y这两组数据可以看做是在Oxy平面内对坐标进行采样得到的坐标对(x, y)

功能:绘制z=x^2 + y^2 三维图像
时间:2019/10/1
"""
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D   
import numpy as np


plt.figure()
ax = plt.axes(projection="3d")

x = np.arange(-5,5,0.1)
y = np.arange(-5,5,0.1)
X,Y = np.meshgrid(x,y)    # 2生成绘制3D图形所需的网络数据
Z = X**2+Y**2

ax.plot_surface(X,Y,Z,alpha=0.5,cmap="winter") #生成表面,alpha用于控制透明度
#ax.contour(X,Y,Z,zdir="x",offset=-6,cmap="rainbow")   #x轴投影
#ax.contour(X,Y,Z,zdir="y",offset=6,cmap="rainbow")    #y轴投影
#ax.contour(X,Y,Z,zdir="z",offset=-3,cmap="rainbow")   #z轴投影
ax.set_xlabel("X")  #设置X、Y、Z 坐标范围
ax.set_xlim(-6,6)   #设置X、Y、Z 轴
ax.set_ylabel("Y")
ax.set_ylim(-6,6)
ax.set_zlabel("Z")
plt.show()

在这里插入图片描述
给代码中添加图像在XYZ的投影:

在这里插入图片描述
投影中参数解释:offset:默认的投影面是在(0,0,0)处,如果想让投影位于坐标轴平面上,就要用offset去设置投影的位置。

注意:纸上得来终觉浅,绝知此事要躬行。

  • 20
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值