4

是否有任何优雅的方式来显示二维 PDF 函数?

我有一个函数 F(x,y),我想说明它。

这是一种解决方案:

生成meshgrid并计算每个点的值,然后使用imshow()

     1 1.5   2 2.5   3 3.5
    -----------------------
  1| 0   0 0.1 0.2 0.3 0.5
1.5| 0 0.1 0.2 0.3 0.4 0.8
  2| 0 0.1 0.2 0.3 0.5 0.8
2.5| 0 0.2 0.2 0.4 0.4   1
  3| 0 0.1 0.2 0.3 0.5 0.8

但是我不知道是使用 np.vstack 还是 np.meshgrid 来生成“meshgrid”。

谁能告诉我上面的地图怎么画?还是提供一种更“优雅”的方式来做到这一点?

反馈

下面的解决方案完美无缺。它产生如下图: 分配

4

1 回答 1

3

您可以meshgrid用来制作坐标:

import numpy as np
x = np.linspace(1, 3.5, 6)
y = np.linspace(1, 3, 5)
X, Y = np.meshgrid(x, y)

F然后在每一点应用你的:

z = np.array([F(x,y) for x,y in zip(np.ravel(X), np.ravel(Y))])
Z = z.reshape(X.shape)

现在创建一个类似这样的曲面图:

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('F(X, Y)')
plt.show()

imshow如果您更喜欢F使用颜色而不是使用 3D 图来表示,您当然也可以使用。但是,如果您要使用 imshow,则使用 meshgrid 没有多大意义。

于 2013-09-28T18:13:31.683 回答