Matplotlib 在 Jupyter Notebook 中使用 inline plots 并以 SVG 格式输出
如果你经常使用 Jupyter Notebook 来进行数据分析或可视化,那么你一定会使用 Matplotlib 这个 Python 数据可视化库。默认情况下,我们在 Jupyter Notebook 中使用 Matplotlib 进行绘图时,它会以 PNG 图像格式输出到 Notebook 中。虽然 PNG 图像具有较高的分辨率和清晰度,但它们相对于另一种向量图形格式,即 SVG 格式,更加笨重,因此它们适用于印刷和上载到 Web 上,但不太适用于在线展示。
阅读更多:Matplotlib 教程
使用 SVG 代替 PNG
如果我们要将Matplotlib输出的图表用于PPT演示或在线Web演示文稿(如Slack等),那么SVG格式将是一个更好的选择。SVG是一种向量图形格式,因此我们可以将它们放大或缩小而不损失任何清晰度。同时,SVG 文件的大小也比 PNG 文件更小,这意味着它们在网上加载得更快,这对于您的用户体验来说是很重要的。
打开 Jupyter Notebook 并安装ipython-sphinx
,执行以下代码,以验证您是否已经安装了这个包:
!pip install ipython-sphinx
在 Notebook 中,我们需要加载 matplotlib 并将图片格式设置为 SVG。我们可以通过以下代码来完成这个步骤:
import matplotlib.pyplot as plt
%matplotlib inline
%config InlineBackend.figure_format = 'svg'
我们在上面的代码中使用了 matplotlib 库来绘制图表,然后执行 %matplotlib inline
命令,将绘图嵌入到 Notebook 中。 最后,我们使用 %config InlineBackend.figure_format = 'svg'
命令将图片格式设置为 SVG。
接下来,我们绘制几个简单的图表,以供演示:
import numpy as np
x = np.linspace(0, 10, 100)
fig = plt.figure()
plt.plot(x, np.sin(x))
plt.title("A Sine Curve")
plt.xlabel("x")
plt.ylabel("y")
plt.show()
上面的代码将在 Notebook 中生成一个简单的正弦曲线图。 另一个例子:
fig, axs = plt.subplots(1, 2, figsize=(7, 3), sharey=True)
axs[0].plot(x, np.sin(x))
axs[0].set_title('Sine Function')
axs[0].set_xlabel('x')
axs[0].set_ylabel('y')
axs[1].plot(x, np.cos(x), color='r')
axs[1].set_title('Cosine Function')
axs[1].set_xlabel('x')
axs[1].set_ylabel('y')
plt.show()
这个代码将在 Notebook 中生成一个带有两个子图的复合图表。 至此,我们就可以以 SVG 格式轻松地在 Jupyter Notebook 中输出绘图了。
如何保存 SVG 图像
如果您需要将绘图保存为 SVG 文件以将其用于其他地方,那么使用以下代码来保存:
fig, axs = plt.subplots(1, 2, figsize=(7, 3), sharey=True)
axs[0].plot(x, np.sin(x))
axs[0].set_title('Sine Function')
axs[0].set_xlabel('x')
axs[0].set_ylabel('y')
axs[1].plot(x, np.cos(x), color='r')
axs[1].set_title('Cosine Function')
axs[1].set_xlabel('x')
axs[1].set_ylabel('y')
plt.savefig('plot.svg', format='svg')
此代码片段将 svg 图像保存为“plot.svg”文件,您可以在任何支持 SVG 格式的应用程序中打开该文件。 这个保存的 SVG 文件中没有像 png 图像那样的白色背景,它的背景是透明的,这样您就可以将图像轻松地放置在任何背景中而不会影响图像的清晰度。
总结
在 Jupyter Notebook 中,我们可以使用 Matplotlib 来进行数据可视化。默认情况下,Matplotlib 会以 PNG 图像格式输出图像,但如果我们需要在演示文稿或网页上使用图像,那么 SVG 格式更适合。 使用 %config InlineBackend.figure_format = 'svg'
将图像格式设置为 SVG,并使用 plt.savefig
命令将图形保存为 SVG 文件以供将来使用。在实际使用中,除了演示文稿和网站,还有很多其他场景需要使用 SVG 格式,因此掌握在 Jupyter Notebook 中使用 inline plots 并以 SVG 格式输出是一项很有用的技能。