iPython Notebook svg默认情况下的数字

Kon*_*itz 19 ipython-notebook

我刚开始使用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更容易,如果需要,只需使用xlimylim命令手动放大.

此外,您应该调整该行c.InlineBackend.rc,以便为数字大小和使用的字体设置更合理的默认值.

编辑

当前建议的最佳做法是不使用pylab的,但明确地导入matplotlibnumpy代替,让我修改我的答案停止鼓励这种.请参阅此帖子,原因如下:

http://carreau.github.io/posts/10-No-PyLab-Thanks.html

此外,如果svg渲染对于特定的绘图元素(例如pcolorplot_surface)来说太慢,则可以将选项传递rasterized=True给这些绘图命令.这意味着绘图的那些特定部分将具有基于快速像素的渲染,但是所有其他绘图元素将被很好地矢量化.