我正在尋找使用Python和matplotlib在單個繪圖中繪製二維概率分佈及其邊緣之一的2D概率分佈。我幾乎在那裏,但情節中的線總是繪製在表面的前面,而不是被正確地遮擋。我該如何解決?繪製線條和曲面以及正確的遮擋
import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
fig = plt.figure()
ax = fig.gca(projection='3d')
delta = 0.05
f = 0.5
X, Y = np.meshgrid(np.arange(-3.0, 3.0, delta),
np.arange(-3.0, 3.0, delta))
xy = np.hstack((X.flatten()[:, None], Y.flatten()[:, None]))
p1 = stats.multivariate_normal.pdf(xy, mean=[1, -1], cov=(np.eye(2) * 0.28 * f))
p2 = stats.multivariate_normal.pdf(xy, mean=[-1, 1], cov=(np.eye(2) * 0.5 * f))
p = 0.3 * p1 + 0.7 * p2
Z = p.reshape(len(X), len(X))
plt.plot(X[0, :], np.zeros(len(X)) + 3, np.sum(Z, 0) * 0.05) # , color='red')
ax.plot_surface(X, Y, Z, alpha=1.0, cmap='jet', linewidth=0.1, rstride=2, cstride=2)
ax.set_xlabel('Object colour')
ax.set_ylabel('Illumination colour')
ax.set_zlabel('Probability density')
ax.set_zlim(min(cont_offset, np.min(Z)), max(np.max(Z), cont_offset))
plt.show()
什麼是mltools? – cge
plt.plot有一個zorder參數,但我不確定這在3D軸中是否有意義。 – cphlewis
mltools是我製作的一個小型庫,我重寫了使用scipy的代碼,以便它可以在沒有編輯的情況下運行。 zorder似乎不適用於我的情況。 – user1018464