1

x-[1、5]とy-[0.1-0.5]の範囲のxとyの2d値があります。

matplotlibで軸がx、y、P(y)である3Dサーフェスをプロットするにはどうすればよいですか?

ネット上のmatlabでそうするためのコードを見つけましたが、それを理解できず、結果としてmatplotlibに変換できません...(以下に記述されているコードでは、必要なものに関して値の範囲が完全に異なります)

  mu = [1 -1]; Sigma = [.9 .4; .4 .3];
  [X1,X2] = meshgrid(linspace(-1,3,25)', linspace(-3,1,25)');
  X = [X1(:) X2(:)];
  p = mvnpdf(X, mu, Sigma);
  surf(X1,X2,reshape(p,25,25));

誰かがmatplotlibに対してまったく同じことをするのを手伝ってくれますか(おそらくplot_surface?)

4

1 に答える 1

4
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.mlab as mlab
import numpy as np

def P(X, Y):
    return mlab.bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0)      

fig = plt.figure()
ax = fig.gca(projection = '3d')
jet = plt.get_cmap('jet')

x = np.linspace(-2, 2, 60)
y = np.linspace(-2, 2, 60)
X, Y = np.meshgrid(x, y)
Z = P(X, Y)
surf = ax.plot_surface(X, Y, Z, rstride = 1, cstride = 1, cmap = jet, linewidth = 0)
ax.set_zlim3d(0, Z.max())

plt.show()

収量

ここに画像の説明を入力してください

于 2012-11-09T10:21:20.963 に答える