基于相邻轴值在 3D matplotlib 曲面图中显示等高线
Displaying Contours in 3D matplotlib Surface Graphs based on adjacent axis values
我已经在此处发布了一个类似于以下关于另一个问题的示例:
我针对不同的问题再次发帖:
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
fig = plt.figure()
ax = fig.gca(projection='3d')
X = np.array([[200,800,1500,2000,3000],[200,700,1500,2000,3000],[200,800,1500,2000,3000],[200,800,1500,2000,3000]])
Y = np.array([[50,50,50,50,50],[350,350,350,350,350],[500,500,500,500,500],[1000,1000,1000,1000,1000]])
Z = np.array([[0,0,33,64,71],[44,62,69,74,76],[59,67,72,75,77],[63,68,73,76,77]])
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, alpha=0.5)
cset = ax.contour(X, Y, Z, zdir='x', offset=200, cmap=cm.coolwarm)
levels = [500,700,1000,2000,3000]
ax.set_xticks(levels)
ax.set_xlabel('X')
ax.set_xlim(200, 3000)
ax.set_ylabel('Y')
ax.set_ylim(0, 1000)
ax.set_zlabel('Z')
ax.set_zlim(0, 100)
plt.show()
是否可以让我的等高线绘制多个等于相邻轴值的等高线:
例如3D_Surface_from_code_above 对于图片左侧我的 Y-Z 平面中的轮廓。与其显示 7 个等高线(我不确定它们也对应什么 X 值),是否可以为每个 X 刻度值显示一个?即 500、700、1000、2000、3000。
我希望这是有道理的,它可以让观察者跟随对应于 X = 700 的等高线,并查看对于这个固定的 X 值,Z 相对于 Y 是如何变化的。这将允许我设置等高线我特别感兴趣的 X 值。
感谢您的帮助。
您可以直接将级别设置为轮廓函数的参数,如
levels = [500,700,1000,2000,3000]
cset = ax.contour(X, Y, Z, levels, zdir='x', offset=200, cmap=cm.coolwarm)
我已经在此处发布了一个类似于以下关于另一个问题的示例:
我针对不同的问题再次发帖:
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
fig = plt.figure()
ax = fig.gca(projection='3d')
X = np.array([[200,800,1500,2000,3000],[200,700,1500,2000,3000],[200,800,1500,2000,3000],[200,800,1500,2000,3000]])
Y = np.array([[50,50,50,50,50],[350,350,350,350,350],[500,500,500,500,500],[1000,1000,1000,1000,1000]])
Z = np.array([[0,0,33,64,71],[44,62,69,74,76],[59,67,72,75,77],[63,68,73,76,77]])
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, alpha=0.5)
cset = ax.contour(X, Y, Z, zdir='x', offset=200, cmap=cm.coolwarm)
levels = [500,700,1000,2000,3000]
ax.set_xticks(levels)
ax.set_xlabel('X')
ax.set_xlim(200, 3000)
ax.set_ylabel('Y')
ax.set_ylim(0, 1000)
ax.set_zlabel('Z')
ax.set_zlim(0, 100)
plt.show()
是否可以让我的等高线绘制多个等于相邻轴值的等高线:
例如3D_Surface_from_code_above 对于图片左侧我的 Y-Z 平面中的轮廓。与其显示 7 个等高线(我不确定它们也对应什么 X 值),是否可以为每个 X 刻度值显示一个?即 500、700、1000、2000、3000。
我希望这是有道理的,它可以让观察者跟随对应于 X = 700 的等高线,并查看对于这个固定的 X 值,Z 相对于 Y 是如何变化的。这将允许我设置等高线我特别感兴趣的 X 值。
感谢您的帮助。
您可以直接将级别设置为轮廓函数的参数,如
levels = [500,700,1000,2000,3000]
cset = ax.contour(X, Y, Z, levels, zdir='x', offset=200, cmap=cm.coolwarm)