Jupyter notebook 绘图时,如何生成高清图片?

来源:凹凸数据

最近有小伙伴问了个问题:如何在jupyter notebook,用Matplotlib画图时能够更“高清”?

今天正好跟大家聊聊,解决办法。

先举个小例子,用 Matplotlib 绘制极坐标图:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

s = pd.Series(np.arange(20))
fig = plt.figure(figsize=(8, 4))
ax = plt.subplot(111, projection='polar')
ax.plot(s, linestyle='--', marker='.', lw=3)
plt.savefig("temp.png")
cdc36107696d1945a696d9a349942846.png

打开保存到当前工作目录里的temp.png,放大之后就会发现确实“像素略渣”

c6e7cc8aff19ac85fd0453af945bb5da.gif

一些小伙伴可能会说,那我修改图像像素尺寸不就行了。

确实可以,不过要记得同时修改所有的像素尺寸,而不是只改图像大小,否则就会像下面一样👇

170e20dc63663d2add9ffa2bd182da3c.png

我们可以在保存图像时,增加一些参数。

比如dpi就是分辨率,每英寸的点数。

s = pd.Series(np.arange(20))
fig = plt.figure(figsize=(8, 4))
ax = plt.subplot(111, projection='polar')
ax.plot(s, linestyle='--', marker='.', lw=3)
plt.savefig("temp_1.png", dpi=500, bbox_inches='tight')

另一个参数bbox_inches: 只有图形给定部分会被保存。设置为“tight”用以恰当的匹配所保存的图形。

这样生成的图像就足够高清了。

1f466ed110c44a63a91c4aac678277aa.png

想让图像高清,还有另外一种方法。

之前跟大家介绍过一些魔法命令,比如%matplotlib inline 可以在Ipython编译器里直接使用,功能是可以内嵌绘图,并且可以省略掉plt.show()这一步。

我们可以再增加一行配置,就能让 Matplotlib 在 Jupyter Notebook 上面输出高清矢量图了。

%config InlineBackend.figure_format = 'svg'

输出的格式是svg,这样浏览器就可以渲染出矢量图了。

06f8427aee5e2819430947a1a53b3dc3.png

更改保存格式,就得到了高清的矢量图。

489521abd5f528d58c0c93af75603ec9.gif

第二种方法使用了Jupyter notebook 中的魔法命令,可以设定显示图片的分辨率。

同样的参数设置还有:

%config InlineBackend.figure_format = "png"

%config InlineBackend.figure_format = "svg"

%config InlineBackend.figure_format = "retina"

在分辨率较高的屏幕(例如 Retina 显示屏)上,Jupyter Notebook 中的默认图像可能会显得模糊。

可以在 %matplotlib inline 之后使用%config InlineBackend.figure_format = "retina"来呈现分辨率较高的图像。

-------- End --------

087e69c66198de1ba8d58b41eeab79ea.png
精选资料

回复关键词,获取对应的资料:

关键词资料名称
600《Python知识手册》
md《Markdown速查表》
time《Python时间使用指南》
str《Python字符串速查表》
pip《Python:Pip速查表》
style《Pandas表格样式配置指南》
mat《Matplotlib入门100个案例》
px《Plotly Express可视化指南》
精选视频

可视化: Plotly Express

财经: Plotly在投资领域的应用 | 绘制K线图表

排序算法: 冒泡排序 | 选择排序 | 快速排序 | 归并排序 | 堆排序 | 插入排序 | 希尔排序 | 计数排序 | 桶排序

00f721fc443332e26fccc649c9a0914a.png
  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值