【发布时间】:2015-05-29 01:55:52
【问题描述】:
我正在尝试使用 matplotlib 绘制 2D 字段数据。所以基本上我想要类似的东西:
在我的实际情况中,我将数据存储在硬盘驱动器上的文件中。然而,为简单起见,请考虑函数 z = f(x, y)。我想要一个平滑的 2D 图,其中 z 使用颜色可视化。我使用以下代码行管理绘图:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-1, 1, 21)
y = np.linspace(-1, 1, 21)
z = np.array([i*i+j*j for j in y for i in x])
X, Y = np.meshgrid(x, y)
Z = z.reshape(21, 21)
plt.pcolor(X, Y, Z)
plt.show()
但是,我获得的情节非常粗糙。有没有一种非常简单的方法来平滑情节?我知道surface 的情节可能会发生类似的事情,但是,这些是 3D 的。我可以改变摄像机角度来获得 2D 表示,但我相信有一种更简单的方法。我也试过imshow,但我必须在graphic坐标中思考,原点在左上角。
问题已解决
我设法解决了我的问题:
plt.imshow(Z,origin='lower',interpolation='bilinear')
【问题讨论】:
-
唯一将链接图与您的图分开的是您的网格要粗糙得多。将 21 更改为更大的值,例如 101 或 1001。
-
是的,我知道,但即使网格点数量较少,也可以使用插值获得平滑图。
imshow有这个能力。我可以用pcolor做类似的事情吗? -
请编辑您的问题以准确地描述您想要什么,并附上一个有代表性的例子。
标签: python matplotlib plot