其他
改善matplotlib在jupyter内的渲染效果
标量(位)图
matplotlib能绘制出美观的图,是一个挺好用的绘图包,但是在jupyter内渲染的图很丑,有种模糊感。
import matplotlib.pyplot as plt
import numpy as np
# Data for plotting
t = np.arange(0.0, 2.0, 0.01)
s = 1 + np.sin(2 * np.pi * t)
fig, ax = plt.subplots()
ax.plot(t, s)
ax.set(xlabel='time (s)', ylabel='voltage (mV)',
title='About as simple as it gets, folks')
ax.grid()
plt.show()
矢量图
实际上,jupyter notebook内加上一行配置,就能让matplotlib输出矢量图(放大缩小不改变图片样子)。
%config InlineBackend.figure_format = 'svg'
配置后,浏览器会渲染出更精细化的图,如下图所示
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
%config InlineBackend.figure_format = 'svg'
# Data for plotting
t = np.arange(0.0, 2.0, 0.01)
s = 1 + np.sin(2 * np.pi * t)
fig, ax = plt.subplots()
ax.plot(t, s)
ax.set(xlabel='time (s)', ylabel='voltage (mV)',
title='About as simple as it gets, folks')
ax.grid()
plt.show()
图片变的细致,模糊感消失了。
保存
savefig可以保存为.pdf、.eps、 .svg、 .png等不同格式文件。其中.pdf 或者 .eps 能方便地插入到 latex 中!
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
%config InlineBackend.figure_format = 'svg'
# Data for plotting
t = np.arange(0.0, 2.0, 0.01)
s = 1 + np.sin(2 * np.pi * t)
fig, ax = plt.subplots()
ax.plot(t, s)
ax.set(xlabel='time (s)', ylabel='voltage (mV)',
title='About as simple as it gets, folks')
ax.grid()
#矢量图svg
plt.savefig(fname='三角函数图.svg')
#标量图设置dpi高一点,输出的图精致一些
#plt.savefig(fname='三角函数图.png', dpi=300)
#plt.savefig(fname='三角函数图.pdf', dpi=300)
#plt.savefig(fname='三角函数图.svg', dpi=300)