我刚开始使用ipython,我正在创建如下数字:
fig, axes = plt.subplots()
xs = range(0,100)
axes.plot(xs, [x*x for x in xs], 'r')
Run Code Online (Sandbox Code Playgroud)
我知道这些数字可以呈现为svgs,请参见此处.不幸的是,这些数字总是呈现为光栅化图像.当我使用笔记本的缩放功能时,光栅化的图像变得非常难看.有没有办法改变这种行为,这样数字默认显示为svg?
Yau*_*ich 26
我正在寻找的魔力:
%matplotlib inline
%config InlineBackend.figure_format = 'svg'
import matplotlib.pyplot as plt
Run Code Online (Sandbox Code Playgroud)
或者,您可能仍希望显示png但将图形保存到文件中:
plt.savefig(fig_filename, format='svg')
Run Code Online (Sandbox Code Playgroud)
Dav*_*veP 18
您可以在ipython配置文件配置文件中更改默认数字格式.我所做的是为笔记本服务器创建一个配置文件,使用:
ipython profile create nbserver
Run Code Online (Sandbox Code Playgroud)
在命令行.这会创建一大堆文件,~/.ipython/profile_nbserver其中几乎每个设置都有示例行,您可能想要更改它(可能是某些地方,例如~/.config/ipython取决于您的操作系统,不确定它在Windows下的位置).你需要查看文件ipython_notebook_config.py.然后你应该添加这一行:
c.InlineBackend.figure_formats = ['svg']
Run Code Online (Sandbox Code Playgroud)
请注意,这仅适用于IPython 3.x,您还可以根据@ HarrySchreiner的注释指定其他格式.对于IPython 2.x,你应该设置c.InlineBackEnd.figure_format='svg'.要使用此配置文件,您应该启动笔记本
ipython notebook --profile=nbserver
Run Code Online (Sandbox Code Playgroud)
如果这太麻烦了,那么在运行时不要给出配置文件名称create,而是修改默认配置文件.
此外,您可能想要这条线
c.IPKernelApp.matplotlib = 'inline'
Run Code Online (Sandbox Code Playgroud)
这样每个笔记本都会自动启动matplotlib内联后端使用.
最初我也想使用svg后端而不是png来启用缩放等.但是,我发现某些绘图,例如pcolor有大量的点可能会在使用svg后端时杀死我的浏览器.因此我发现使用png更容易,如果需要,只需使用xlim和ylim命令手动放大.
此外,您应该调整该行c.InlineBackend.rc,以便为数字大小和使用的字体设置更合理的默认值.
编辑
当前建议的最佳做法是不使用pylab的,但明确地导入matplotlib和numpy代替,让我修改我的答案停止鼓励这种.请参阅此帖子,原因如下:
http://carreau.github.io/posts/10-No-PyLab-Thanks.html
此外,如果svg渲染对于特定的绘图元素(例如pcolor或plot_surface)来说太慢,则可以将选项传递rasterized=True给这些绘图命令.这意味着绘图的那些特定部分将具有基于快速像素的渲染,但是所有其他绘图元素将被很好地矢量化.
| 归档时间: |
|
| 查看次数: |
8961 次 |
| 最近记录: |