标量(位)图

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()

svg


保存

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)

svg


广而告之