matplotlib画子图、调整子图间距、设置子图、大图标题

plt.tight_layout() 自动调整子图间距
调整前:
在这里插入图片描述
调整后

fig = plt.figure(figsize=(12,5))
for i in range(5):
    ax = fig.add_subplot(5, 1, i+1)                      # 3行3列的第一个位置
    word_pro = lda.get_topic_terms(i, topn=10000)
    word_pro_x = list(map(lambda x: x[0],word_pro))
    word_pro_y = list(map(lambda x: x[1],word_pro))
    ax.scatter(word_pro_x, word_pro_y,s=10)
    plt.ylim([0,0.08]); plt.xlim(0,3300)
    ax.set_title(f'topic{i+1}')                          # 设置小图标题
plt.tight_layout()                                       # 自动调整子图间距
plt.xlabel('number of word')                             # 不设置总标题
fig.suptitle(None)                                       # 设置大图标题

在这里插入图片描述
设置子图标题: ax.set_title() 设置总图标题:fig.suptitle

fig.add_subplot(1, 3, 1).set_ylabel(r'$Score_{nlp}$') 指定某个子图来设置总x轴标签标题

# 不同星级的情感评分  
fig = plt.figure(dpi=150)  # dpi=150
for n, df in enumerate([df_m,df_p,df_h]):
    ax = fig.add_subplot(1, 3, n+1)                      # 3行3列的第一个位置
    df.boxplot(column='final_score',by=['star_rating'],ax=ax)
    ax.set_title(f'{df.index.name}')                          # 不设置子标题
    ax.set_xlabel(None)
    ax.set_xlabel(' Star rating ')
fig.add_subplot(1, 3, 1).set_ylabel(r'$Score_{nlp}$')    # 单独设置某个
plt.tight_layout()                                       # 自动调整子图间距
fig.suptitle(None)                                            # 不设置总标题

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Caiqiudan/article/details/111401883