你可以通过以下方式启用xkcd样式:
import matplotlib.pyplot as plt
plt.xkcd()
但如何禁用它?
我尝试过:
self.fig.clf()
但这不会起作用。
你可以通过以下方式启用xkcd样式:
import matplotlib.pyplot as plt
plt.xkcd()
但如何禁用它?
我尝试过:
self.fig.clf()
但这不会起作用。
plt.xkcd()
之后调用plt.rcdefaults()
。
发生的情况是plt.xkcd()
改变了rc
参数(这基本上是它的工作原理)。
plt.xkcd()
保存当前rc
参数并返回一个上下文管理器(这样您就可以使用with
语句),以便在结束时重置它们。如果您没有保存plt.xkcd()
返回的上下文管理器,则无法返回到调用之前完全相同的rc
参数状态。
换句话说,假设您之前做过类似于plt.rc('lines', linewidth=2, color='r')
的操作,然后再调用plt.xkcd()
。如果您没有使用with plt.xkcd():
或者manager = plt.xkcd()
,则调用plt.rc
之后rcParams
的状态将会丢失。
然而,您可以通过调用plt.rcdefaults()
恢复为默认的rcParams
。只是您不会保留调用plt.xkcd()
之前所做的任何特定更改。我在文档中看到了这个,它有帮助吗?
with plt.xkcd():
# This figure will be in XKCD-style
fig1 = plt.figure()
# ...
# This figure will be in regular style
fig2 = plt.figure()
如果没有,你可以查看 matplotlib.pyplot.xkcd
的代码,了解他们如何生成允许反转配置的上下文管理器。
就使用那个
import matplotlib.pyplot as plt
plt.rcdefaults()
# before showing the plot
你可以尝试
manager = plt.xkcd()
# my xkcd plot here
mpl.rcParams.update(manager._rcparams)
这应该重置先前的状态,模拟上下文管理器。显然,它并没有所有上下文管理器的功能,例如在异常情况下的重置等。
或者,不需要干扰上下文管理器的内部实现。
saved_state = mpl.rcParams.copy()
mpl.xkcd()
# my xkcd plot here
mpl.rcParams.update(saved_state)
您可以在 plt.show() 前使用 plt.rcdefaults 或 pyplot.rcdefaults。
这肯定会将 rcparams 重置为默认值。我尝试过了,它有效。
只需简单使用逗号即可,
plt.xkcd(False)
那对我很有效
import matplotlib as mpl
mpl.rcParams.update(mpl.rcParamsDefault)