[英]Python, Matplotlib: Stack multiple heatmaps on top of each other along z-axis in 3D
[英]How do I remove overflow along the z-axis for a 3D matplotlib surface?
我正在尝试用 matplotlib 绘制 3d 网格表面并限制图形的限制。 X 和 Y 轴被正确约束,但 Z 轴有溢出。
我错过了什么? 这是我的代码:
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits import mplot3d
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure(figsize=(10,10))
x = np.linspace(-6,6,100)
y = np.linspace(-6,6,100)
X,Y = np.meshgrid(x,y)
def f(x,y):
return x**2 + 3*y
Z = f(X,Y)
ax = plt.axes(projection = '3d')
ax.plot_surface(X,Y,Z,cmap='viridis')
ax.title.set_text("z=x**2+3y")
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
ax.set_zlim3d(zmin=-3,zmax=5)
ax.set_xlim3d(xmin=-6,xmax=6)
ax.set_ylim3d(ymin=-6,ymax=6)
plt.show()
图表:
您的数据在轴边界之外。 尝试旋转视图,您会注意到。
z = x**2 + 3*y
如果您只想显示数据的定义区域,您可以在 Z 数据上添加一个 max() min() 限制,以排除您想要的限制之外的数据。
Z = f(X,Y)
z_tmp = np.maximum(np.minimum(5,Z),-3)
ax = plt.axes(projection = '3d')
ax.plot_surface(X,Y,z_tmp,cmap='viridis')
我不确定 matplotlib 在默认情况下的行为是否正常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.