You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将各章节人物提及次数统计结果以折线图可视化?

人物提及次数统计与折线图可视化

问题背景

你拥有5个对应书籍章节的文本文件,希望统计Anna、John在各章节的提及次数,现有代码仅能打印杂乱的统计结果,需要将结果转换为折线图,每条折线代表一位人物在各章节的提及次数。

解决方案

1. 重构统计逻辑,整理结构化数据

先修改代码,将各章节的统计结果整理成人物-章节次数列表的字典结构,适配后续绘图需求:

import re

# 定义要统计的目标人物
target_names = ["Anna", "John"]
# 初始化统计字典:键为人物名,值为对应各章节的提及次数列表
name_counts = {name: [] for name in target_names}
# 按顺序列出所有章节文件
chapter_files = ["p1.txt", "p2.txt", "p3.txt", "p4.txt", "p5.txt"]

# 批量处理每个章节文件
for file_name in chapter_files:
    # 用with语句安全读取文件,自动关闭资源
    with open(file_name, 'r', encoding='utf-8') as f:
        content = f.read()
    # 统计当前章节中每个人物的提及次数,存入对应列表
    for name in target_names:
        count = len(re.findall(name, content))
        name_counts[name].append(count)

# 可选:打印整理后的统计数据
print("统计结果:")
for name, counts in name_counts.items():
    print(f"{name} 在各章节的提及次数:{counts}")

2. 使用Matplotlib绘制折线图

基于整理好的字典数据,用matplotlib生成折线图:

import matplotlib.pyplot as plt

# 定义x轴的章节标签
chapter_labels = ["章节1", "章节2", "章节3", "章节4", "章节5"]

# 遍历统计字典,为每个人物绘制折线
for name, counts in name_counts.items():
    plt.plot(chapter_labels, counts, marker='o', label=name)

# 设置图表样式
plt.title("人物在各章节的提及次数")
plt.xlabel("章节")
plt.ylabel("提及次数")
plt.legend()  # 显示人物图例
plt.grid(True, linestyle='--', alpha=0.7)  # 添加辅助网格线

# 展示图表
plt.show()

代码说明

  • 用循环批量处理文件,避免重复编写读取代码;
  • 统计结果直接存入字典,每个人物对应各章节的次数列表,完美匹配折线图的数据格式;
  • 绘图时添加标记点、图例和网格,让图表更直观易读。

内容的提问来源于stack exchange,提问作者futuredataengineer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 00:20:52