用 pygal绘图首先打开文件对话框来选择一个要进行词频统计的文件,指定文件为文本类型,统计其中每个单词出现的频数,不考虑标点符号,单引号除外,用柱状图显示top50的单词,生成图形文件"word.G
时间: 2024-12-20 10:18:47 浏览: 11
在Pygal中绘制词频统计柱状图,你需要按照以下步骤操作:
1. 首先,安装pygal库,如果还没有安装,可以使用`pip install pygal`命令。
2. 导入所需的模块:
```python
from pygal import Bar
import os
import re
```
3. 打开文件对话框让用户选择文件:
```python
import tkinter as tk
root = tk.Tk()
file_path = tk.filedialog.askopenfilename(filetypes=[("Text files", "*.txt")])
```
4. 读取文件内容并处理成单词列表:
```python
with open(file_path, 'r', encoding='utf-8') as f:
text = f.read()
# 使用正则表达式去掉标点符号,除了单引号
words = re.findall(r'\b\w[\w']*\b', text.lower())
```
5. 统计单词频率,并排序前50个:
```python
word_counts = dict()
for word in words:
if word not in word_counts:
word_counts[word] = 0
word_counts[word] += 1
top_50_words = sorted(word_counts.items(), key=lambda x: x[1], reverse=True)[:50]
```
6. 创建并绘制柱状图:
```python
bar_chart = Bar()
bar_chart.title = "Top 50 Word Frequencies"
bar_chart.x_labels = [word[0] for word in top_50_words]
bar_chart.values = [count for word, count in top_50_words]
# 保存图片到本地
bar_chart.render_to_file('word.GIF')
```
7. 最后关闭文件对话框窗口:
```python
root.destroy()
```
阅读全文