Python 是否更新已打印图形的颜色?

Python 是否更新已打印图形的颜色?,python,python-3.x,matplotlib,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 o

我想知道是否有可能更新一个参数,例如一个已经绘制的图形的线颜色,而该参数在销毁图形并创建另一个图形时不会自动换行

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

比如:

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

您需要捕获通过
hline
呼叫创建的艺术家:

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
画了多条线,设置了多个颜色,但也只画了一条线就可以了。

对不起,也许我没有正确理解它。它所做的是获取已创建hline的ID并更改其颜色?更改主绘图颜色(ax.plot([1,2,3],[1,2,3],color=c)怎么样?算了,没关系。我掌握了窍门。谢谢你的提示(特别是fig.canvas.draw()):@VictorJosé抱歉,我被你的尝试弄糊涂了,我以为您想更改hline的颜色。您还应该阅读一篇关于如何使用OO界面的较长文章。