读取存储《哈姆雷特》英文剧本的文件,分析统计其中单词出现的频率,使用turtle模块绘制词频统计结果,以柱状图的形式展示统计结果
时间: 2024-02-21 18:57:08 浏览: 122
使用Python的turtle模块绘制钢铁侠图案
好的,我可以帮你实现这个功能。不过在开始之前,需要先确认一下你的环境是否已经安装好了以下库:`nltk`,`matplotlib`,`turtle`。
如果你还没有安装这些库,可以使用以下命令进行安装:
```
pip install nltk matplotlib turtle
```
接下来,你可以按照以下步骤来实现你的需求:
1. 导入所需的库:
```python
import nltk
import matplotlib.pyplot as plt
import turtle
```
2. 读取文件并进行单词统计:
```python
# 读取文件
with open('hamlet.txt', 'r') as f:
text = f.read()
# 对文本进行分词和词频统计
words = nltk.word_tokenize(text)
freq = nltk.FreqDist(words)
```
3. 绘制柱状图:
```python
# 取出前20个最常出现的单词和它们的频率
top_words = freq.most_common(20)
labels, values = zip(*top_words)
# 绘制柱状图
plt.bar(labels, values)
plt.show()
```
4. 使用turtle模块绘制词频统计结果:
```python
# 设置画布大小和坐标系范围
turtle.setup(800, 600)
turtle.setworldcoordinates(-1, -1, len(top_words), max(values) + 10)
# 绘制坐标轴
turtle.penup()
turtle.goto(0, 0)
turtle.pendown()
turtle.goto(len(top_words), 0)
turtle.penup()
turtle.goto(0, 0)
turtle.pendown()
turtle.goto(0, max(values))
# 绘制柱状图
for i, word in enumerate(top_words):
turtle.penup()
turtle.goto(i + 0.25, 0)
turtle.pendown()
turtle.begin_fill()
turtle.setheading(90)
turtle.forward(word[1])
turtle.right(90)
turtle.forward(0.5)
turtle.right(90)
turtle.forward(word[1])
turtle.end_fill()
turtle.penup()
turtle.goto(i + 0.25, -20)
turtle.write(word[0], align='center')
# 显示图形
turtle.done()
```
通过以上步骤,你就可以得到一个使用turtle模块绘制的柱状图,展示《哈姆雷特》英文剧本中单词出现的频率了。
阅读全文