您可以通过以下方式打开xkcd样式:
import matplotlib.pyplot as plt
plt.xkcd()
但是如何禁用它?
我试试:
self.fig.clf()
但它不起作用。
答案 0 :(得分:27)
简而言之,要么使用上下文管理器作为@Valentin,要么之后调用plt.rcdefaults()
。
正在发生的事情是rc
参数被plt.xkcd()
更改(基本上是它的工作方式)。
plt.xkcd()
保存当前rc
params返回一个上下文管理器(以便您可以使用with
语句)在最后重置它们。如果您没有继续plt.xkcd()
返回的上下文管理器,那么您将无法恢复到之前完全相同的rc
参数。
换句话说,假设您在调用plt.rc('lines', linewidth=2, color='r')
之前做过plt.xkcd()
之类的事情。如果您没有with plt.xkcd():
或manager = plt.xkcd()
,则调用rcParams
后plt.rc
的状态将会丢失。
但是,您可以通过调用rcParams
恢复默认plt.rcdefaults()
。在致电plt.xkcd()
之前,您不会保留所做的任何具体更改。
答案 1 :(得分:11)
我在文档中看到这个,它有帮助吗?
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
的代码,看看他们如何生成允许反转配置的上下文管理器
答案 2 :(得分:5)
你可以尝试
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)
答案 3 :(得分:0)
将此添加到代码的开头
// do some stuff here...
答案 4 :(得分:0)
您可以在plt.show()之前简单地使用plt.rcdefaults
或pyplot.rcdefaults
。
它肯定会将rcparams重置为默认值。 我尝试了,就行了。
答案 5 :(得分:0)
只需使用
import matplotlib.pyplot as plt
plt.rcdefaults()
# before showing the plot
答案 6 :(得分:0)
仅使用
plt.xkcd(False)
对我有用的