将以下代码修改正确:from wordcloud import WordCloud wc = WordCloud(font_path="simhei.ttf", background_color="white", mask=imgg ) img = wc.generate_from_frequencies(c) plt.figure(figsize=(12,8)) plt.imshow(img) plt.savefig('C:/Users/Administrator/Desktop/sgsj问题/高频词词云图1') plt.axis('off') plt.show()
时间: 2024-02-24 13:53:37 浏览: 90
以下是修改后的代码:
```python
from wordcloud import WordCloud
import matplotlib.pyplot as plt
wc = WordCloud(font_path="simhei.ttf", background_color="white", mask=imgg)
img = wc.generate_from_frequencies(c)
plt.figure(figsize=(12,8))
plt.imshow(img)
plt.axis('off')
plt.savefig('C:/Users/Administrator/Desktop/sgsj问题/高频词词云图1.png') # 添加文件后缀名
plt.show()
```
主要修改如下:
1. 导入 `matplotlib.pyplot` 库,用于展示图片和保存图片。
2. 将 `plt.savefig()` 函数中的文件路径后添加图片后缀名 `.png`。
3. 将代码缩进调整,避免语法错误。
相关问题
修改 # 导入jieba模块,用于中文分词 import jieba # 导入matplotlib,用于生成2D图形 import matplotlib.pyplot as plt # 导入wordcount,用于制作词云图 from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator # 获取所有评论 comments = set() # 使用 set 来去除重复项 try: with open('comments.txt', mode='r', encoding='utf-8') as f: rows = f.readlines() for row in rows: # 获取评论内容并去除空格 comment = row.split(',')[2].strip() if comment != '': comments.add(comment) except FileNotFoundError: print('文件不存在') except Exception as e: print('文件读取失败:', e) # 输出去重后的评论数量 print('评论数量:', len(comments)) # 设置分词 comment_after_split = jieba.cut(str(comments), cut_all=False) # 非全模式分词,cut_all=false words = " ".join(comment_after_split) # 以空格进行拼接 # print(words) # 设置屏蔽词 stopwords = STOPWORDS.copy() stopwords.add("电影") stopwords.add("一部") stopwords.add("一个") stopwords.add("没有") stopwords.add("什么") stopwords.add("有点") stopwords.add("这部") stopwords.add("这个") stopwords.add("不是") stopwords.add("真的") stopwords.add("感觉") stopwords.add("觉得") stopwords.add("还是") stopwords.add("但是") stopwords.add("就是") # 导入背景图 bg_image = plt.imread('xin.jpg') # 设置词云参数,参数分别表示:画布宽高、背景颜色、背景图形状、字体、屏蔽词、最大词的字体大小 wc = WordCloud(width=1024, height=768, background_color='white', mask=bg_image, font_path='simhei.ttf', stopwords=stopwords, max_font_size=400, random_state=50) # 将分词后数据传入云图 wc.generate_from_text(words) plt.imshow(wc) plt.axis('off') # 不显示坐标轴 plt.show() # 保存结果到本地 wc.to_file('词云图.jpg')
好的,以下是对代码的修改建议:
1. 为了避免在生成词云时出现中文乱码的问题,可以使用中文字体,建议将字体路径单独定义为一个变量,方便后续的修改和维护。
2. 此处使用的背景图需要保证存在于当前工作目录下,否则会出现文件不存在的错误。建议使用绝对路径或者相对路径来指定背景图的路径,以避免路径错误。
3. 为了使词云图更加美观,可以调整一些参数,比如调整最大字体大小、调整背景颜色等。
4. 为了让词云图更加准确地反映出评论的关键词,建议在分词前先去除一些无意义的词,比如“电影”、“一个”、“没有”等。
5. 可以将生成词云图的代码封装为一个函数,方便后续的调用和使用。
下面是修改后的代码示例:
```python
import os
import jieba
import matplotlib.pyplot as plt
from wordcloud import WordCloud, STOPWORDS
def generate_word_cloud(filepath, bg_path, stopwords, font_path):
comments = set()
try:
with open(filepath, mode='r', encoding='utf-8') as f:
rows = f.readlines()
for row in rows:
comment = row.split(',')[2].strip()
if comment != '':
comments.add(comment)
except FileNotFoundError:
print('文件不存在')
return
except Exception as e:
print('文件读取失败:', e)
return
words = " ".join(jieba.cut(str(comments), cut_all=False))
stopwords = set(stopwords)
wc = WordCloud(
width=1024,
height=768,
background_color='white',
mask=plt.imread(bg_path),
font_path=font_path,
stopwords=stopwords,
max_font_size=200,
random_state=50
)
wc.generate_from_text(words)
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()
wc.to_file('词云图.jpg')
if __name__ == '__main__':
filepath = 'comments.txt'
bg_path = os.path.join(os.getcwd(), 'xin.jpg')
font_path = os.path.join(os.getcwd(), 'simhei.ttf')
stopwords = set(STOPWORDS)
stopwords.update([
"电影", "一个", "没有", "什么", "有点", "这部", "这个", "不是", "真的",
"感觉", "觉得", "还是", "但是", "就是"
])
generate_word_cloud(filepath, bg_path, stopwords, font_path)
```
希望这次修改可以满足您的需求。
import matplotlib.pyplot as plt import jieba import wordcloud py = plt.imread('E:/shixun/girl.jpg') #读取预先准备的词云形状图片 f = open('E:/shixun/text.txt', encoding='utf-8') #打开预先准备的词云图文本文件 txt = f.read() #读取图文本文件中的内容#对读取到的文本内容进行分词 txt_list = jieba.lcut(txt) #将分词列表转成字符串,分隔符为空格 string = ''.join(txt_list) #词云图设置 wc = wordcloud.WordCloud( width=1000, height=700, background_color='white', font_path='mysh.ttc', #词云图中的文字字体 mask=py, #所使用的的词云图片 scale=15, stopwords={'的', '了'} #停用词,即不希望出现在词云图中的词 ) #给词云输入文字 wc.generate(string)报错Only supported for TrueType fonts怎么修改
这个错误是因为你使用了一个不支持的字体文件。你需要将字体文件路径改为一个支持的 TrueType 字体文件。例如,你可以使用 Windows 系统自带的 "simhei.ttf" 字体,将字体文件路径改为 "C:/Windows/Fonts/simhei.ttf"。修改的代码如下:
```python
import matplotlib.pyplot as plt
import jieba
import wordcloud
py = plt.imread('E:/shixun/girl.jpg') #读取预先准备的词云形状图片
f = open('E:/shixun/text.txt', encoding='utf-8') #打开预先准备的词云图文本文件
txt = f.read() #读取图文本文件中的内容
#对读取到的文本内容进行分词
txt_list = jieba.lcut(txt)
#将分词列表转成字符串,分隔符为空格
string = ''.join(txt_list)
#词云图设置
wc = wordcloud.WordCloud(
width=1000,
height=700,
background_color='white',
font_path='C:/Windows/Fonts/simhei.ttf', #改为一个支持的 TrueType 字体文件
mask=py, #所使用的的词云图片
scale=15,
stopwords={'的', '了'} #停用词,即不希望出现在词云图中的词
)
#给词云输入文字
wc.generate(string)
```
阅读全文