alw*_*btc 13 python matplotlib
你打开xkcd样式:
import matplotlib.pyplot as plt
plt.xkcd()
Run Code Online (Sandbox Code Playgroud)
但是如何禁用它呢?
我尝试:
self.fig.clf()
Run Code Online (Sandbox Code Playgroud)
但它不会起作用.
Joe*_*ton 29
简而言之,要么使用上下文管理器作为@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()
.
Val*_*ntz 11
我在文档中看到了这个,它有帮助吗?
with plt.xkcd():
# This figure will be in XKCD-style
fig1 = plt.figure()
# ...
# This figure will be in regular style
fig2 = plt.figure()
Run Code Online (Sandbox Code Playgroud)
如果没有,您可以查看matplotlib.pyplot.xkcd
代码并查看它们如何生成允许反转配置的上下文管理器
就用那个
import matplotlib.pyplot as plt
plt.rcdefaults()
# before showing the plot
Run Code Online (Sandbox Code Playgroud)
小智 6
你可以试试
manager = plt.xkcd()
# my xkcd plot here
mpl.rcParams.update(manager._rcparams)
Run Code Online (Sandbox Code Playgroud)
这应该重置以前的状态,模拟上下文管理器.显然,它没有上下文管理器的所有功能,例如,异常情况下的重置等.
或者,没有弄乱上下文管理器的内部
saved_state = mpl.rcParams.copy()
mpl.xkcd()
# my xkcd plot here
mpl.rcParams.update(saved_state)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7409 次 |
最近记录: |