Matplotlib 实现画局部图

在画图中,我们需要放大图像的某一部分,看清其变化。最近在写论文时,就遇到了这个问题,还有坐标轴加粗、控制线型和大小等要求。这些,都可以通过Python Matplotlib库实现。具体看下面的代码:

import matplotlib.pyplot as plt

init_np = np.array(x0_list)
xopt_net_np = np.array(xopt_net)

plt.figure(figsize=(8,5))
plt.subplot(311)
ax = plt.gca() # 获取坐标轴
bwith = 1.2
ax.spines['bottom'].set_linewidth(bwith)
ax.spines['left'].set_linewidth(bwith)
ax.spines['top'].set_linewidth(bwith)
ax.spines['right'].set_linewidth(bwith)
plt.yticks([])
plt.xlim([-21,21])
plt.plot(init_np, np.zeros_like(init_np), '.b', markersize=2, label='initial value Distri.')
plt.legend()

plt.subplot(312)
ax = plt.gca()
bwith = 1.2
ax.spines['bottom'].set_linewidth(bwith)
ax.spines['left'].set_linewidth(bwith)
ax.spines['top'].set_linewidth(bwith)
ax.spines['right'].set_linewidth(bwith)
plt.yticks([])
plt.xlabel('x')
plt.plot(xopt_gd, np.zeros_like(xopt_gd), '.r', markersize=2, label='optimal value Distri. by GD')
plt.xlim([-21,21])
plt.legend()

plt.subplot(313)
ax = plt.gca()
bwith = 1.2
ax.spines['bottom'].set_linewidth(bwith)
ax.spines['left'].set_linewidth(bwith)
ax.spines['top'].set_linewidth(bwith)
ax.spines['right'].set_linewidth(bwith)
plt.yticks([])
plt.plot(xopt_net_np, np.zeros_like(xopt_net_np), '.r', markersize=2, label='optimal value Distri. by Network')
plt.xlim([-21,21])
plt.legend()

plt.axes([0.125,0.275,0.25,0.07])   # list:[左下角水平坐标, 左下角垂直坐标, 宽度, 高度]
# plt.xticks(())
plt.yticks(())
plt.plot(xopt_net_np, np.zeros_like(xopt_net_np), '.r', markersize=1, label='optimal value Distr.')
plt.savefig('sol_scipy_ai.png', dpi=400, bbox_inches='tight')
plt.show()

得到了下面的效果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值