matplotlib画子图添加标题、设置刻度等

补充参考

单个图绘制柱状图

一、子图的设置

  1. 子图标题设置
ax1.title.set_text('scores')
  1. 子图刻度设置
ll = [round(i,2) for i in bins] ## list
ax1.set_xticks(ll)
  1. 子图设置刻度标签
ax1.set_xticklabels(['one','two','three','four','five'],rotation = 30,fontsize = 'small') # 设置刻度标签

  1. 子图label设置
ax1.set_xlabel('Score Error')

y方向的label设置类似

二、主图的设置

  1. 主图标题的设置
plt.suptitle("Compare between {}".format(info))
  1. 主图y轴注释的设置
fig.text(0.08, 0.5, 'Number of Points', va='center', rotation='vertical')
## 两个数字是文字放置的坐标

主图x轴注释的设置

fig.text(0.5, 0, 'xlabel', ha='center')

子图相关设置通过ax实现,主图的相关设置通过fig或者plt实现

三、参考代码

fig = plt.figure(figsize=(25, 6), facecolor='gray')
ax1 = fig.add_subplot(1, 3, 1)  # 第一行的第一个图
# nums, bins, patches = ax1.hist(score_list_total, alpha=0.5)
nums, bins, patches = ax1.hist(score_list_total,bins=12)

ax1.title.set_text('scores')
# ax1.set_xticklabels("{:.3f}".format(i) for i in bins)
ll = [round(i,2) for i in bins]
ax1.set_xticks(ll)
ax1.set_xlabel('Score Error')
# ax1.set_ylabel('Number of Points')

for num, bin in zip(nums, bins):
    # plt.annotate("%.4f" % num, xy=(round(bin,4), int(num)), xytext=(round(bin,4) , int(num)))
    plt.annotate(int(num), xy=(round(bin,4), int(num)), xytext=(round(bin,4)+0.008 , int(num)+3))

ax2 = fig.add_subplot(1, 3, 2)  # 第一行的第二个图
# nums2, bins2, patches2 = ax2.hist(x_list_total, alpha=0.5)
nums2, bins2, patches2 = ax2.hist(x_list_total,bins=12)

ax2.title.set_text('x')
# ax2.set_xticklabels(round(i, 3) for i in bins2)
ll = [round(i, 3) for i in bins2]
ax2.set_xticks(ll)
ax2.set_xlabel('x Error')
# ax2.set_ylabel('Number of Points')

for num, bin in zip(nums2, bins2):
    # plt.annotate("%.4f" % num, xy=(round(bin,4), int(num)), xytext=(round(bin,4) , int(num)))
    plt.annotate(int(num), xy=(round(bin, 4), int(num)), xytext=(round(bin, 4) + 0.8, int(num) + 3))

ax3 = fig.add_subplot(1, 3, 3)  # 第一行第三个图
nums3, bins3, patches3 = ax3.hist(y_list_total,bins=12)

ax3.title.set_text('y')
# ax3.set_xticklabels(round(i, 3) for i in bins3)
ll = [round(i, 3) for i in bins3]
ax3.set_xticks(ll)
ax3.set_xlabel('y Error')


for num, bin in zip(nums3, bins3):
    # plt.annotate("%.4f" % num, xy=(round(bin,4), int(num)), xytext=(round(bin,4) , int(num)))
    plt.annotate(int(num), xy=(round(bin, 4), int(num)), xytext=(round(bin, 4) + 0.8, int(num) + 3))

# plt.ylabel('Number of Points')
fig.text(0.08, 0.5, 'Number of Points', va='center', rotation='vertical')
# plt.title("Compare between {}".format(info))
plt.suptitle("Compare between {}".format(info))
plt.savefig(info + '.png')

四、图示效果

在这里插入图片描述

五、子图添加图例

fig = plt.figure(figsize=(15, 10))
ax1 = fig.add_subplot(2, 2, 1)
ax1.plot(left_ankle_list[10:])
ax1.plot(right_ankle_list[10:])
ax1.legend(['left_ankle','right_ankle']) ## 添加图例。数组里面的第一个图表示画的第一条曲线的图例
ax1.set_title('left and right ankles coordinate for instant')

效果

在这里插入图片描述

补充 隐藏子图坐标轴

 ax1.get_xaxis().set_visible(False)# 隐藏x坐标轴
 ax1.get_yaxis().set_visible(False)# 隐藏y坐标轴

 ax2.get_xaxis().set_visible(False)
 ax2.get_yaxis().set_visible(False)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值