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 21:35:32 浏览: 18
好的,这是一个Python程序,是用来对《战争与和平》这本书进行词频统计,并且筛选出出现次数最多的前十个人名。同时,还会生成一个柱形图,展示这十个人名出现的次数。为了正确显示中文,需要在代码中添加以下两行:
```python
plt.rcParams['font.sans-serif'] = ['SimHei'] #设置中文显示
plt.rcParams['axes.unicode_minus'] = False #解决负号显示问题
```
这两行代码会将字体设置为黑体,同时解决负号显示的问题。你可以将这两行代码添加到程序的开头,然后再运行程序,这样就能正确显示中文了。
相关问题
解释一下这串代码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表格中、进行正则表达式匹配、生成词云等。
请帮我解释这段代码import requests import xlwt import re from wordcloud import WordCloud import jieba import matplotlib.pyplot as plt
这段代码是Python语言的代码,使用了几个库:requests库,xlwt库,re库,wordcloud库,jieba库和matplotlib库。requests库可以用来向网页发送请求并获取响应,xlwt库可以将数据写入Excel文件,re库提供了正则表达式工具,wordcloud库可以制作词云,jieba库是用于中文分词的库,matplotlib库可以制作各种图表。代码中先导入了这几个库,然后引入相应的功能。