import jieba import matplotlib.pyplot as plt txt = open("战争与和平.txt", 'r', encoding='utf-8').read() remove={"--------","莫斯科"} words = jieba.lcut(txt) counts = {} for word in words: if len(word) == 1 or len(word) == 2: continue elif word == "公爵": rword = "安德烈" elif word == "小姐": rword = "娜塔莎" elif word == "伯爵": rword = "皮埃尔" else: rword = word counts[rword] = counts.get(rword, 0) + 1 for word in remove: del counts[word] items = list(counts.items()) items.sort(key=lambda x: x[1], reverse=True) word = [] count = [] for i in range(10): w, c = items[i] word.append(w) count.append(c) l=print("{:5}".format(w, c)) plt.bar(word,count) plt.title('10 person') plt.xlabel('name') plt.ylabel('occurrences') plt.show() 运行这个程序,最后柱形图matplotlib正确显示中文
时间: 2024-03-27 11:35:32 浏览: 136
好的,这是一个Python程序,是用来对《战争与和平》这本书进行词频统计,并且筛选出出现次数最多的前十个人名。同时,还会生成一个柱形图,展示这十个人名出现的次数。为了正确显示中文,需要在代码中添加以下两行:
```python
plt.rcParams['font.sans-serif'] = ['SimHei'] #设置中文显示
plt.rcParams['axes.unicode_minus'] = False #解决负号显示问题
```
这两行代码会将字体设置为黑体,同时解决负号显示的问题。你可以将这两行代码添加到程序的开头,然后再运行程序,这样就能正确显示中文了。
相关问题
修改代码import jieba import numpy as np import matplotlib.pyplot as plt text = open('comment.txt', encoding='utf-8').read() from PIL import Image, ImageDraw, ImageFont from wordcloud import WordCloud text = ' '.join(jieba.cut(text)) # 生成对象 mask = np.array(Image.open("computer.jpg")) wc = WordCloud(ImageFont.truetype("arial.ttf")).generate(text) # 显示词云 # plt.imshow(wc, interpolation = 'bilinear') # plt.axis("off") # plt.show() # 保存文件 wc.to_file('rs_computer.png')
这段代码的问题在于 `WordCloud` 类的实例化时,使用了错误的参数格式。`WordCloud` 类的构造函数需要传入一个字典类型的参数,用于指定词云生成时的各种参数。而在这段代码中,只传入了一个 `ImageFont.truetype("arial.ttf")` 参数,这是错误的。
下面是修改后的代码,已经添加了 `WordCloud` 类的参数字典:
```python
import jieba
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image, ImageDraw, ImageFont
from wordcloud import WordCloud
text = open('comment.txt', encoding='utf-8').read()
text = ' '.join(jieba.cut(text))
# 生成对象
mask = np.array(Image.open("computer.jpg"))
wc = WordCloud(
font_path=ImageFont.truetype("arial.ttf"),
mask=mask,
background_color="white",
max_words=2000,
max_font_size=100,
width=1600,
height=800,
random_state=42
).generate(text)
# 显示词云
# plt.imshow(wc, interpolation='bilinear')
# plt.axis("off")
# plt.show()
# 保存文件
wc.to_file('rs_computer.png')
```
在这个例子中,我们使用了 `WordCloud` 类的参数字典,指定了生成词云时的各种参数,例如字体文件路径、遮罩图像、背景颜色、最大单词数、最大字体大小、词云图像宽度和高度等。这样就可以正确地生成和保存词云图像了。
解释一下这串代码import requests import xlwt import re from wordcloud import WordCloud import jieba import matplotlib.pyplot as plt
这串代码是Python代码,主要使用了requests、xlwt、re、WordCloud、jieba和matplotlib.pyplot等库,实现了一些文字处理相关的功能,比如从网页中获取数据、将数据存储到Excel表格中、进行正则表达式匹配、生成词云等。
阅读全文