2016-02-14 7 views
7

In pandas e seaborn, è possibile modificare temporaneamente il display/opzioni plottaggio utilizzando la parola chiave with, che si applica l'impostazione specificata solo per il codice rientrato, lasciando le impostazioni globali intatta:Esiste un gestore del contesto per modificare temporaneamente le impostazioni di matplotlib?

print(pd.get_option("display.max_rows")) 

with pd.option_context("display.max_rows",10): 
    print(pd.get_option("display.max_rows")) 

print(pd.get_option("display.max_rows")) 

Out :

60 
10 
60 

Quando provo simile with mpl.rcdefaults(): o with mpl.rc('lines', linewidth=2, color='r'):, ricevo AttributeError: __exit__.

C'è un modo per modificare temporaneamente rcParams in matplotlib, in modo che si applichino solo a un sottoinsieme selezionato del codice, o devo continuare a passare avanti e indietro manualmente?

risposta

8

Sì, utilizzando i fogli di stile.

See: http://matplotlib.org/users/style_sheets.html

es .:

# The default parameters in Matplotlib 
with plt.style.context('classic'): 
    plt.plot([1, 2, 3, 4]) 

# Similar to ggplot from R 
with plt.style.context('ggplot'): 
    plt.plot([1, 2, 3, 4]) 

Si può tranquillamente definire i tuoi fogli di stile e utilizzare

with plt.style.context('/path/to/stylesheet'): 
    plt.plot([1, 2, 3, 4]) 

Per i singoli le opzioni, c'è anche plt.rc_context

with plt.rc_context({'lines.linewidth': 5}): 
    plt.plot([1, 2, 3, 4]) 
9

Sì, la funzione matplotlib.rc_context farà ciò che si desidera:

import matplotlib as mpl 
import matplotlib.pyplot as plt 
with mpl.rc_context({"lines.linewidth": 2, "lines.color": "r"}): 
    plt.plot([0, 1]) 
Problemi correlati