我正在使用matplotlib.pyplot。
我想执行以下操作:
如何执行第4步?我想避免重新绘制背景点。
Hereunder是缺少第4步的代码示例。
import matplotlib.pyplot as plt
fig = plt.figure()
plt.xlim(-10,10)
plt.ylim(-10,10)
#step 1: background blue dot
plt.plot(0,0,marker='o',color='b')
#step 2: additional black dots
points_list = [(1,2),(3,4),(5,6)]
for point in points_list:
plt.plot(point[0],point[1],marker='o',color='k')
#step 3: save
plt.savefig('test.eps')
#step 4: remove additional black dots
答案 0 :(得分:2)
您可以通过执行以下操作删除绘制的点:
temporaryPoints, = plt.plot(point[0],point[1],marker='o',color='k')
temporaryPoints.remove()
答案 1 :(得分:0)
您可以使用:
#step 2
black_points, = plt.plot( zip(*points_list), marker="o", color="k")
#... step 3 ...
#...
#step 4
black_points.set_visible( False)
答案 2 :(得分:0)
plot
函数返回代表绘制数据的Line2D
对象的列表。这些对象具有remove
方法,该方法会将其从绘制它们的图形中移除(注意Line2D
继承自Artist
,您可以通过Line2D.__mro__
进行检查):
remove() method of matplotlib.lines.Line2D instance
Remove the artist from the figure if possible. The effect
will not be visible until the figure is redrawn, e.g., with
:meth:`matplotlib.axes.Axes.draw_idle`. Call
:meth:`matplotlib.axes.Axes.relim` to update the axes limits
if desired.
[...]
因此,您可以执行以下操作(我一次性完成了对单点的绘制):
points = plt.plot(*zip(*points_list), 'o', color='k')[0]
# Remove the points (requires redrawing).
points.remove()
保持您的for
循环是:
points = []
for point in points_list:
points.extend(
plt.plot(point[0], point[1], marker='o', color='k')
)
for p in points:
p.remove()
或更简洁地使用列表理解:
points = [plt.plot(*p, marker='o', color='k')[0] for p in points_list]