簡體   English   中英

在現有的matplotlib圖表中添加第二個圖

[英]Adding a second plot to an existing matplotlib chart

我希望有一個在調用時將圖添加到現有圖表的函數。 現在我的空圖顯示出來了,但是調用函數似乎一直沒有發生,因為它一直等到我關閉圖表窗口。 然后,程序結束而無需重新打開圖表窗口。

import numpy as np
import matplotlib.pyplot as plt
import time

fig, ax = plt.subplots()
plt.show()
def plotting(slope, intercept):

    x_vals = np.array(ax.get_xlim())
    y_vals = intercept + slope * x_vals
    ax.plot(x_vals, y_vals, '-')
    plt.show()

plotting(10,39)
time.sleep(1)
plotting(5,39)

plt.show()應該在腳本末尾被調用一次。 它將一直阻塞,直到關閉繪圖窗口。

您可以使用交互模式( plt.ion() )並在中間步驟( plt.draw() )繪制圖。 要獲得暫停,請不要使用time.sleep()因為它會使應用程序從字面上休眠(可能導致凍結的窗口)。 而是使用plt.pause() 最后,您可以再次關閉交互模式( plt.ioff() ),最后調用plt.show() ,以使繪圖保持打開狀態。

import numpy as np
import matplotlib.pyplot as plt

plt.ion()
fig, ax = plt.subplots()

def plotting(slope, intercept):

    x_vals = np.array(ax.get_xlim())
    y_vals = intercept + slope * x_vals
    ax.plot(x_vals, y_vals, '-')
    plt.draw()

plotting(10,39)
plt.pause(1)
plotting(5,39)

plt.ioff()
plt.show()

將可選的關鍵字參數block=False發送到plt.show()

說明:繪圖窗口阻止程序繼續運行。 發送此參數將允許程序繼續。 請注意,如果僅使用該參數並且程序結束,則繪圖窗口將關閉。 因此,您可能想在程序末尾調用plt.show(block=True)plt.waitforbuttonpress()


就個人而言,我會為自己的函數添加一個塊參數:

def plotting(slope, intercept, block=True):

    x_vals = np.array(ax.get_xlim())
    y_vals = intercept + slope * x_vals
    ax.plot(x_vals, y_vals, '-')
    plt.show(block=block)

plotting(10,39,False)
time.sleep(1)
plotting(5,39)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM