Matplotlib不显示从ginput指定的点

时间:2015-08-25 15:21:58

标签: python matplotlib

使用以下代码:

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.patches import Polygon

data = np.random.rand(4, 4)
plt.imshow(data)

points_xy = np.array(plt.ginput(3))

p = Polygon(points_xy, alpha=0.3)
plt.gca().add_artist(p)
plt.show()

不显示多边形。如果我在最后添加它,它会这样做:

plt.imshow(data)

这是因为多边形位于数据层之下,当我再次调用plt.imshow(data)时,它会将数据层移动到多边形下方吗?

对点进行硬编码而不是使用plt.ginput()也会得到正确的结果:

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.patches import Polygon

data = np.random.rand(4, 4)
plt.imshow(data)

points_x = (0, 2, 1)
points_y = (0, 1, 3)
points_xy = np.array([points_x, points_y]).T

p = Polygon(points_xy, alpha=0.3)
plt.gca().add_artist(p)
plt.show()

为什么多边形不会显示原始代码?

我正在使用Python 3.4和matplotlib 1.4.3。

1 个答案:

答案 0 :(得分:0)

我认为您需要在plt.draw之前plt.show。将艺术家添加到轴后,在另一个动作告诉matplotlib重绘轴之前,不会绘制它。您可以使用plt.draw执行此操作。 plt.imshow工作的原因是因为它会自动绘制轴

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.patches import Polygon

data = np.random.rand(4, 4)
plt.imshow(data)

points_xy = np.array(plt.ginput(3))
p = Polygon(points_xy, alpha=0.3)
plt.gca().add_artist(p)

plt.draw()
plt.show()

enter image description here