是否有用于临时更改matplotlib设置的上下文管理器?

时间:2016-02-14 17:07:12

标签: python pandas matplotlib seaborn

pandasseaborn中,可以使用with关键字临时更改显示/绘图选项,该关键字仅将指定的设置应用于缩进代码,同时保留全球环境未受影响:

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"))

输出:

60
10
60

当我同样尝试with mpl.rcdefaults():with mpl.rc('lines', linewidth=2, color='r'):时,我会收到AttributeError: __exit__

有没有办法暂时更改matplotlib中的rcParams,以便它们只应用于代码的选定子集,还是必须手动来回切换?

2 个答案:

答案 0 :(得分:17)

是的,使用样式表。

请参阅:http://matplotlib.org/users/style_sheets.html

e.g:

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

您可以轻松定义自己的样式表并使用

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

对于单个选项,还有plt.rc_context

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

答案 1 :(得分:14)

是的,matplotlib.rc_context功能可以满足您的需求:

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