使用以下代码:
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。
答案 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()