python - 向 imshow 添加影线 - Matplotlib

标签 python matplotlib

基本上,我想要做的是在 this 的答案中解释的想法。题。

我用 imshow 绘制了一个 100 x 100 的图像并且,在某些时候,我想绘制影线。

所以,这是我的图像示例:

enter image description here

这表示 100 个标量场样本的平均值。我也有这个样本的标准偏差:

enter image description here

所以,我想要做的是在标准差 > 0.0 的位置绘制与影线相结合的平均属性。

我的数据是 100 x 100,其维度从 -4 到 4 不等。
以下提出的想法here ,我目前的做法是:

plt.figure()
fig = plt.imshow(scalar_field, origin='lower', extent=(-4, 4, -4, 4))
plt.colorbar(fig)

x_indices = numpy.nonzero(standard_deviation)[0]
y_indices = numpy.nonzero(standard_deviation)[1]

ax = plt.gca()
for p in range(len(x_indices)):
    i = x_indices[p]
    j = y_indices[p]
    ax.add_patch(patches.Rectangle((i-.5, j-.5), 1, 1, hatch='//', fill=False, snap=False))

plt.show()
plt.close()

但是,我没有在正确的位置得到图案。到目前为止我还没有使用过补丁,我不知道我是否以正确的方式使用它们。

enter image description here

任何帮助,将不胜感激。

最佳答案

您需要将索引 (0..99) 转换为图像的比例 (-4..4),并且每个块的大小不是 1、1 而是 0.08、0.08。此外,您需要 ec='None' 在 Rectangle 中删除块之间的边缘。我相信它是这样的:

ax.add_patch(patches.Rectangle(((i-50.5)*0.08-.04, (j-50.5)*0.08), 0.08, 0.08, 
   hatch='//', fill=False, snap=False, linewidth=0))

但是,我怀疑您会用阴影填充整个区域:您确定 stddev 在某些地方完全为零(它永远不会小于零)。

关于python - 向 imshow 添加影线 - Matplotlib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25184898/

相关文章:

python - 尽管 rasterized=True,为什么 matplotlib 图形文件大小很大?

python - 绘制饼图时出现问题

python - 设置xlim后如何根据屏幕上显示的数据自动设置ylim

Python fromtimestamp OSError

python - FindContours 仅支持 8uC1 和 32sC1 图像

python - 如何将从元组列表创建的 png 图像转换回该元组列表?

python - 将 argparse 与 Setuptools entry_points 一起使用

python - 如何在python中比较和合并两个文件

python - 使用 matplotlib/pyplot 混合线条颜色绘制曲线

python - 如何在 Matplotlib 中设置补丁的边色和面色的不同不透明度