2016-02-14 5 views
7

In pandas und seaborn ist es möglich, das Display vorübergehend zu ändern/von Optionen Auftragen des with Schlüsselwort, das die angegebene Einstellung nur für den gegliederten Code gilt, während die globalen Einstellungen unberührt bleiben:Gibt es einen Context-Manager zum temporären Ändern der Matplotlib-Einstellungen?

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 

Als ich in ähnlicher Weise with mpl.rcdefaults(): oder with mpl.rc('lines', linewidth=2, color='r'): versuchen, erhalte ich AttributeError: __exit__.

Gibt es eine Möglichkeit, die rcParams in Matplotlib vorübergehend zu ändern, so dass sie nur für eine ausgewählte Teilmenge des Codes gelten, oder muss ich manuell weiterschalten?

Antwort

8

Ja, mit Stylesheets.

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

z.B .:

# 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]) 

Sie können ganz einfach Ihre eigenen Stylesheets definieren und

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

Für einzelne Optionen verwenden, gibt es auch plt.rc_context

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

Ja, die matplotlib.rc_context Funktion tun, was Sie wollen:

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