直接上代码吧
# MATLAB画图的替代品
import matplotlib
import numpy as np
import matplotlib.pyplot as plt
from cycler import cycler
t = np.linspace(0.0, 2.0)
alphac = np.sin(t)
alphac_td = np.cos(t)
alpha = np.sin(2.0*t)
# 指定画图风格
plt.rcParams.update({
"legend.fancybox": False,
"legend.frameon": False, # 有没有框
"font.family": "DeJavu Serif", #不知为何找不到serif,只能用这个
"font.serif": ["Times"], # 图形字体
# 颜色,线型排序 注意颜色和线型的个数要匹配
# "axes.prop_cycle": (cycler('color', ['k', 'r', 'b', 'g']) + cycler('ls', ['-', '--', ':', '-.'])),
"axes.prop_cycle": (cycler('color', ["#4477AA", "#EE6677", "#228833", "#CCBB44"]) + cycler('ls', ['-', '--', ':', '-.'])),
# "axes.prop_cycle": (cycler('color', ["#0d49fb", "#e6091c", "#26eb47", "#8936ff"]) + cycler('ls', ['-', '--', ':', '-.'])),
"xtick.direction": 'in', # 坐标朝里
"xtick.major.size": 3, # 横轴tick的长度
"xtick.major.width": 0.5, # 主坐标
"xtick.minor.size": 1.5,
"xtick.minor.width": 0.5,
"xtick.minor.visible": False, # 次坐标可不可见
"xtick.top": False, # 上边有没有刻度线
"ytick.direction": 'in',
"ytick.major.size": 3,
"ytick.major.width": 0.5,
"ytick.minor.size": 1.5,
"ytick.minor.width": 0.5,
"ytick.minor.visible": False,
"ytick.right": False, # 右边有没有刻度线
"savefig.bbox": 'tight',
"savefig.pad_inches": 0.05,
"figure.figsize": [3.3, 2.5], # 图片大小 1英寸等于2.54厘米
"figure.dpi": 600,
"font.size": 6, # 图像整体的字号
"axes.linewidth": 0.5, # 坐标轴宽度
'axes.grid': False, # grid
"grid.linewidth": 0.5, # 如果有grid的话,网格宽度
"lines.linewidth": 1.0 # 线宽
})
# 单个图
pparam = dict(xlabel='Time/ (s)', ylabel=r'$alpha$/rad') # 横纵坐标
fig, ax = plt.subplots()
ax.plot(t, alphac, label='alphac')
ax.plot(t, alphac_td, label='alphac_td')
ax.plot(t, alpha, label='alpha_real')
leg = ax.legend(fontsize=8)
ax.autoscale(tight=True)
ax.set(**pparam)
fig.savefig('figures/fig3b.jpg', dpi=600)
# 两个图竖着排
pparam = dict(xlabel='Time/ (s)', ylabel=r'$alpha$/rad') # 横纵坐标
fig, ax = plt.subplots(2, 1)
ax1 = ax[0]
ax1.plot(t, alphac, label='alphac')
ax1.plot(t, alphac_td, label='alphac_td')
ax1.plot(t, alpha, label='alpha_real')
leg = ax1.legend(fontsize=8)
ax1.autoscale(tight=True)
ax1.set(**pparam)
ax2 = ax[1]
ax2.plot(t, alphac, label='alphac')
ax2.plot(t, alphac_td, label='alphac_td')
ax2.plot(t, alpha, label='alpha_real')
leg = ax2.legend(fontsize=8)
ax2.autoscale(tight=True)
ax2.set(**pparam)
fig.savefig('figures/fig33b.jpg', dpi=600)
# 两个图横着排
pparam = dict(xlabel='Time/ (s)', ylabel=r'$alpha$/rad') # 横纵坐标
fig, ax = plt.subplots(1, 2)
ax1 = ax[0]
ax1.plot(t, alphac, label='alphac')
ax1.plot(t, alphac_td, label='alphac_td')
ax1.plot(t, alpha, label='alpha_real')
leg = ax1.legend(fontsize=8)
ax1.autoscale(tight=True)
ax1.set(**pparam)
ax2 = ax[1]
ax2.plot(t, alphac, label='alphac')
ax2.plot(t, alphac_td, label='alphac_td')
ax2.plot(t, alpha, label='alpha_real')
leg = ax2.legend(fontsize=6) # 单独设置
ax2.autoscale(tight=True)
ax2.set(**pparam)
fig.savefig('figures/fig333b.jpg', dpi=600)
这里边最大的问题就是Times 这个字体经常没法用,可能需要单独拷贝进matplotlib的字体文件夹里
画出图来长这样
- 竖着排
- 横着排
- 就一个



