基于相邻轴值在3D matplotlib曲面图中显示轮廓

时间:2016-04-12 10:29:49

标签: python matplotlib axis contour

我已在此处发布了一个类似于以下问题的示例:

Displaying Contours in front of Surface in matplotlib

我将再次发布一个不同的问题:

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

是否可以让我的轮廓绘制多个等于相邻轴值的轮廓:

e.g。 3D_Surface_from_code_above对于我左边Y-Z平面的轮廓。而不是显示7个轮廓(我不确定它们对应的X值)是否可以为每个X刻度值设置一个?即500,700,1000,2000,3000。

我希望有意义,它将允许观察者遵循对应于X = 700的轮廓并且看到Z对于该固定值X而言相对于Y如何变化。这将允许我设置值的轮廓。 X是我特别感兴趣的。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您可以将等级直接设置为等高线功能的参数

levels = [500,700,1000,2000,3000]
cset = ax.contour(X, Y, Z, levels, zdir='x', offset=200, cmap=cm.coolwarm)