Una domanda precedente affrontato utilizzando savefig()
per salvare con la (colore di sfondo) stesso facecolor come viene visualizzato sullo schermo, vale a dire:Matplotlib figura facecolor alpha, mentre il risparmio (colore di sfondo, la trasparenza)
fig = plt.figure()
fig.patch.set_facecolor('blue')
fig.savefig('foo.png', facecolor=fig.get_facecolor())
Matplotlib figure facecolor (background color)
(Usando savefig()
ci impone di specificare nuovamente il colore di sfondo.)
posso anche specificare un alfa per la trasparenza, per esempio: How to set opacity of background colour of graph wit Matplotlib
012.351.fig.patch.set_alpha(0.5)
non riesco a trovare un modo per rendere la figura con un facecolor trasparente Salva come appare sullo schermo. La documentazione sembra incompleta su questo: http://matplotlib.org/faq/howto_faq.html#save-transparent-figures - il salvataggio effettivo non viene mostrato. L'utilizzo di con savefig()
non ha l'effetto desiderato di rendere trasparente il facecolor, ma sembra che tutto faccia eccezione alla leggenda degli assi trasparente sopra quel colore (inclusi gli sfondi del grafico).
EDIT: Alcune parti pertinenti del codice:
def set_face_color(fig, facecolor):
if facecolor is False:
# Not all graphs get color-coding
facecolor = fig.get_facecolor()
alpha = 1
else:
alpha = 0.5
color_with_alpha = colorConverter.to_rgba(
facecolor, alpha)
fig.patch.set_facecolor(color_with_alpha)
def save_and_show(plt, fig, save, disp_on, save_as):
if save:
plt.savefig(save_as, dpi=dpi_file, facecolor=fig.get_facecolor(),
edgecolor='none')
if disp_on is True:
figManager = plt.get_current_fig_manager()
figManager.window.showMaximized()
plt.show()
else:
plt.close('all')
Potrebbe essere possibile combinare questi, ma spesso mi chiamare set_face_color()
all'inizio di una rappresentazione grafica delle funzioni prima di costruire una griglia di sottotrame e poi save_and_show()
verso la fine. Immagino che dovrebbe funzionare in entrambi i posti, ma preferibilmente preferisco mantenere le funzioni separate ed essere in grado di estrarre l'alfa per passare a savefig()
dall'ultima fig.
EDIT 2 - vale più di mille parole
Alpha = 0.5 sulla sinistra, 1 a destra.
t = [1, 2, 3, 4, 5]
fig = plt.figure()
fig.patch.set_alpha(0.5)
fig.set_facecolor('b')
plt.plot(t, t)
fig2 = plt.figure()
fig2.set_facecolor('b')
plt.plot(t,t)
Ho ragione nell'assumere che tu voglia una figura con uno sfondo trasparente? In ogni caso, dovresti essere in grado di impostare il facecolor usando un argomento di colore RGBA a quattro tuple, ad esempio 'facecolor = (1, 1, 1, 0)'. –
Basta usare alpha per ombreggiare il colore che sto usando un bit (alpha = 0.5 per questo codice). Ho provato a usare 'colorConverter.to_rgba()' così ho potuto usare 'set_facecolor()' e saltare il 'set_alpha()', ma apparentemente 'fig.savefig (..., facecolor = fig.get_facecolor())' non restituisce la 4-tupla o ignora l'alfa. Sto impostando il facecolor altrove nel programma - codificandolo a colori con i valori dei dati, così quando sfoglio i grafici posso ordinarli rapidamente - così mentre potrei portare il valore intorno e passarlo a 'savefig' in seguito preferirei di più essere in grado di estrarlo dalla fig. – schodge
Non sono sicuro, cosa stai cercando di ottenere. Potresti aggiungere un'immagine al tuo post originale? –