MATPLOTLIB 定制化画图

MATPLOTLIB 定制化画图,第1张

MATPLOTLIB 定制化画图 MATPLOTLIB 定制化画图

直接上代码吧

# 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的字体文件夹里
画出图来长这样

  • 竖着排
  • 横着排
  • 就一个

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5689279.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存