You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Matplotlib保存正负情感词云时仅保留最后一张图的问题求助

问题解决:词云保存重复覆盖的问题

问题原因

你的代码不管传入的label是1还是0,都用同一个固定文件名airasia_negcloud.png保存图片,第二次生成的负面词云直接覆盖了第一次的正面词云。加上你期望生成两个独立文件但代码未做区分,才会出现“正面词云图片空白”的情况(实际是被覆盖,或是你找错了对应文件)。

修复后的代码

TEXT_COLUMN = 'pre_process'
TARGET_COLUMN = 'label'

def visualize(label):
    words = ''
    # 根据label区分情感,生成对应文件名和标题
    if label == 1:
        sentiment_tag = 'pos'
        cloud_title = '正面情感词云'
    else:
        sentiment_tag = 'neg'
        cloud_title = '负面情感词云'
    
    # 拼接对应情感的文本内容
    for msg in data[data[TARGET_COLUMN] == label][TEXT_COLUMN]:
        msg = msg.lower()
        words += msg + ' '
    
    # 生成并展示词云
    wordcloud = WordCloud(width=600, height=600).generate(words)
    plt.imshow(wordcloud)
    plt.axis('off')
    plt.title(cloud_title)
    # 动态生成文件名,避免覆盖
    plt.savefig(f'static/airasia_{sentiment_tag}cloud.png', transparent=True)
    plt.show()
    plt.clf()

# 生成两个独立词云
visualize(1)
visualize(0)

关键改动说明

  • 动态文件名:根据label生成不同的保存路径,正面词云存为airasia_poscloud.png,负面词云存为airasia_negcloud.png,彻底解决文件覆盖问题。
  • 区分标题:可视化窗口的标题随情感类型变化,更容易识别当前展示的词云类型。
  • 保存时机正确:plt.savefig在plt.show()之前调用,确保保存的是完整生成的词云(plt.show()执行后画布会被清空,晚保存会得到空白图片)。

修改后运行代码,就能在static文件夹下得到两个独立的词云图片,不会再出现覆盖或空白的情况。

内容的提问来源于stack exchange,提问作者Ain Nabilah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 13:15:24