是否有一个上下文管理器可以临时更改matplotlib设置?

nr7wwzry  于 2023-10-24  发布在  其他
关注(0)|答案(2)|浏览(141)

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,使它们只应用于选定的代码子集,或者我必须手动来回切换?

rlcwz9us

rlcwz9us1#

是的,使用样式表。
参见:https://matplotlib.org/stable/tutorials/introductory/customizing.html
例如:

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

tjjdgumg2#

是的,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])

相关问题