更新已绘制图表的颜色?

时间:2015-06-05 21:28:34

标签: python python-3.x matplotlib

我想知道是否有可能更新一个参数,例如已经绘制过的图形的线条颜色,它不会破坏图形并创建另一个图形。

示例:我绘制图形,然后通过单击在其上创建几条水平绿线。现在我想将图表的蓝色主线更改为红色,而不会丢失已创建的水平绿线。

类似的东西:

import matplotlib.pyplot as plt

c = None
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([1,2,3],[1,2,3], color = c)

def onclick(event):
    plt.ion()
    plt.hlines(event.ydata,event.xdata-0.1,event.xdata+0.1,
           colors='green',linestyle='solid')  

cid = fig.canvas.mpl_connect('button_press_event', onclick)

def change_color():
    c = 'r'
    # ???

plt.show()

change_color() # running this function will update the plot line color to red

1 个答案:

答案 0 :(得分:1)

您需要捕捉hlines电话创建的艺术家:

fig, ax = plt.subplots()

arts = ax.hlines([.5, .75], 0, 1, lw=5)

返回LineCollection个对象。你可以通过编程修改它

arts.set_color(['sage', 'purple'])

要获得更新窗口,您需要致电

fig.canvas.draw()

(在导入pyplot的repl时,最后一位在master上不再为真)

我在这里做了一些更有趣的事情并使用hlines绘制了多条线并设置了多种颜色,但它也只有一条线也一样。