【问题标题】:Update color of an already plotted graph?更新已绘制图形的颜色?
【发布时间】:2015-06-05 21:28:33
【问题描述】:

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

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

类似:

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

【问题讨论】:

    标签: python python-3.x matplotlib


    【解决方案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 绘制了不止一条线并设置了不止一种颜色,但它也适用于只有一条线。

    【讨论】:

    • 对不起,我可能没理解对。它的作用是获取创建的 hlines 的 ID 并更改它们的颜色?改变主图颜色怎么样( ax.plot([1,2,3],[1,2,3], color = c ) ?
    • 操作,没关系。我掌握了窍门。感谢您的提示(尤其是 fig.canvas.draw() ):)
    • @VictorJosé 抱歉,我对你想要做的事情感到困惑,我以为你想改变线条的颜色。
    • 您还应该阅读stackoverflow.com/questions/15858192/…,这是一篇关于如何使用 OO 接口的较长文章。
    猜你喜欢
    • 2015-11-07
    • 2022-11-13
    • 1970-01-01
    • 2019-03-23
    • 2022-01-04
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多