【问题标题】:How to plot multiple subplots to one page using matplotlib?如何使用 matplotlib 将多个子图绘制到一页?
【发布时间】:2020-07-31 15:53:59
【问题描述】:

我想在一页上绘制多个 wordcloud,以便我可以轻松地添加到 word 文档中。以下代码有效,但是 wordclouds 太小了。我怎样才能解决这个问题?谢谢。

    for t in range(ldamodel.num_topics):

        plt.subplot(6,2,t+1)
        print(ldamodel.show_topic(t, num_words))
        word_p_list = ldamodel.show_topic(t, num_words)
        topic_word_dict = {p[0]:p[1] for p in word_p_list}
        plt.imshow(WordCloud().fit_words(topic_word_dict))
        plt.axis("off")
        plt.title("Topic #" + str(t+1))


    plt.savefig(f"terms_all.png", bbox_inches='tight')
    plt.show()

现在是这样的:

【问题讨论】:

    标签: python matplotlib word-cloud


    【解决方案1】:

    这是一个简单的实现,可以让您控制图形的大小。您可以调整figsize 以满足您的需求。

    rows=6
    cols=2
    
    fig, ax = plt.subplots(rows, cols, figsize=(12.5,6.5))
    
    row=0 
    col=0 
    
    for t in range(ldamodel.num_topics):
        word_p_list = ldamodel.show_topic(t, num_words)
        topic_word_dict = {p[0]:p[1] for p in word_p_list}
        ax[row][col].imshow(WordCloud().fit_words(topic_word_dict))
        row=row+1
        if row==rows:
            row=0
            col=col+1
    
    
    plt.savefig(f"terms_all.png", bbox_inches='tight')
    plt.show() 
    

    【讨论】:

    • 能调整大小真是太好了。差不多了。我对阴谋知之甚少。如何关闭网格,为每个子图添加标题,并缩小两列之间的边距?谢谢。
    • 尝试类似:ax[row][col].set_title('title')。这样做可以使用紧凑的布局:plt.tight_layout()。关闭网格线:plt.grid(b=None)
    • 我添加标题成功。格子还在,边距还是蛮大的。
    • 为了更好地控制边距,您可以设置自己的值:plt.subplots_adjust(left=0.07, right=0.93, wspace=0.0, hspace=0.0,top=0.94,bottom=0.09)。你能更新你的情节吗?我不太确定你在说什么网格。
    • 这三行有效: ax[row][col].set_title("Topic #" + str(t+1)) ax[row][col].grid(False) ax[row ][col].axis("off")
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-20
    • 1970-01-01
    • 2016-05-11
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    • 2021-04-22
    相关资源
    最近更新 更多