Если вы хотите построить поверхность, используйте ax.plot_surface(X, Y, Z)
. Где X, Y - это 2-мерная сетка, созданная с помощью np.meshgrid
, а Z - данные в той же сетке. Вы можете сделать поверхность z = 100, взяв ваши данные и умножив на ноль и добавив 100.
Вы можете использовать alpha
, чтобы изменить прозрачность. Обратите внимание: чем прозрачнее, тем труднее увидеть, что может быть не лучшим подходом для разделения ваших данных.
Вот пример.
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
def f(x, y):
return x**2 + y**2
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = y = np.arange(-10.0, 10.0, .1)
X, Y = np.meshgrid(x, y)
Z = f(X,Y)
ax.plot_surface(X, Y, Z,color='gray',alpha=.8)
#To plot the surface at 100, use your same grid but make all your numbers zero
Z2 = Z*0.+100
ax.plot_surface(X, Y, Z2,color='r',alpha=.3) #plot the surface
plt.show()