使用PyPlot或MATLAB图像全局客制化并导出矢量图

发布时间 2023-07-01 17:13:05作者: fang-d

Python

在PyPlot中,我们可以进行这样的设置,对matplotlib进行客制化,并导出矢量图:

# 在使用pyplot绘图,可以通过下面的参数进行全局的客制化
from matplotlib import pyplot
plt.rcParams['axes.grid'] = True
plt.rcParams['figure.dpi'] = 600
plt.rcParams['figure.figsize'] = (8, 4)
plt.rcParams['font.family'] ='serif'
plt.rcParams['lines.linewidth'] = 1
plt.rcParams['mathtext.fontset'] = 'cm'
plt.rcParams['savefig.format'] = 'pdf'
plt.rcParams['savefig.transparent'] = True
plt.rcParams['savefig.bbox'] = 'tight'

# 如果在Juypter Notebook里,也可以通过下面的方式显示矢量图
import matplotlib_inline
matplotlib_inline.backend_inline.set_matplotlib_formats('svg')

# 在导出图片时,记得选择矢量图格式(如PDF、SVG、EPS),例如:
plt.savefig('test.pdf')

MATLAB

在MATLAB中,我们可以进行这样的设置,对MATLAB进行客制化,并导出矢量图:

% MATLAB图像全局客制化
# 字体使用CMU Serif字体,与LaTeX保持一致
set(0, 'DefaultTextFontname', 'CMU Serif');
set(0, 'DefaultAxesFontName', 'CMU Serif');

# 默认打开MATLAB的网格线
set(groot, 'defaultAxesXGrid', 'on');
set(groot, 'defaultAxesYGrid', 'on');
set(groot, 'defaultAxesZGrid', 'on');

# 去除导出图片的白色边缘
set(groot, 'defaultAxesXLimSpec', 'padded');
set(groot, 'defaultAxesYLimSpec', 'padded');
set(groot, 'defaultAxesZLimSpec', 'padded');

我们可以通过这样的命令导出图片

figure();

% ... 绘图命令 ... %

pbaspect([3 1 1]) % 设置各个坐标轴的比例
exportgraphics(gcf, 'img.pdf') % 导出矢量图格式的图片,如PDF、SVG、EPS等