Matplotlib - plt.show () sull'oggetto grafico
Ho un esempio molto semplice qui. Sto creando un grafico da un oggetto ascia restituito da una funzione:
import matplotlib.pyplot as plt
x = ['a', 'b', 'c']
y = [1, 2, 3]
def make_plot():
fig, ax = plt.subplots()
ax.set_title('test bar chart')
return ax
chart = make_plot()
chart.bar(x, y)
plt.show() #why does this show the chart?
La mia domanda riguarda plt.show () alla fine. Ovviamente, questo mostra l'output del grafico. Ma perché? A me non sembra che plt.show () sia legato a nulla. Ho il mio chartoggetto, che contiene il mio grafico con tutti i suoi parametri e quant'altro. Ma come fa plt.show () a interagire con questo? Sembrerebbe più intuitivo avere qualcosa di simile chart.show(), così come chartl'istanza della classe.
Risposte
Buona domanda! chartè un Axes creato quando chiami plt.subplots(). Pyplot è quella che viene chiamata API "stateful". Quando si effettuano chiamate alle funzioni plt. *, Cambia lo stato interno di pyplot e ciò può influire sulle chiamate future. Quando chiami plt.subplots(), sa che c'è una figura appena creata con assi sottotrama appena creati al suo interno.
Allo stesso modo, se chiami plt.plot(), ha un record memorizzato di quali sono gli assi più recenti e traccia i dati su quel grafico.
Dai un'occhiata al codice sorgente pyplot e puoi vedere come ha una managervariabile globale che utilizza per memorizzare il grafico corrente e lo aggiorna managerquando crei un grafico.
Inoltre, c'è Figure.show(). Se vuoi aggirare il pyplot, assomiglia a questo