2016-02-14 9 views
7

W pandas i seaborn, możliwe jest, aby tymczasowo zmienić wyświetlanie/kreślenia opcje za pomocą with słowa kluczowego, które stosuje się określony ustawienie tylko do kodu wcięte, pozostawiając ustawienia globalne nietknięty:Czy istnieje menedżer kontekstów do tymczasowej zmiany ustawień 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 

Kiedy podobnie spróbować with mpl.rcdefaults(): lub with mpl.rc('lines', linewidth=2, color='r'):, otrzymam AttributeError: __exit__.

Czy istnieje sposób tymczasowej zmiany rcParams w matplotlib, tak aby dotyczyły tylko wybranego podzbioru kodu, czy też muszę ręcznie przełączać się między nimi?

Odpowiedz

8

Tak, używając arkuszy stylów.

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

np .:

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

Można łatwo zdefiniować własne arkusze stylów i używać

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

dla pojedynczych opcji istnieje również plt.rc_context

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

Tak, funkcja zrobi, co chcesz:

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