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

如何用Matplotlib绘制以文本文件值为X轴、频率为Y轴的折线图?

解决Matplotlib绘制值-频率折线图的问题

要实现以文本文件中的值为X轴、对应出现频率为Y轴的折线图,核心是先完成值的频率统计,再整理数据传入Matplotlib。以下是具体解决步骤和修正后的代码:

1. 统计值的出现频率

使用Python标准库collections.Counter可以快速统计每个值的出现次数,无需手动遍历计数。先读取文件中所有值,再进行统计。

2. 整理X、Y轴数据

统计完成后,将X轴的唯一值按顺序排序(保证折线图逻辑连贯),再提取对应每个值的频率作为Y轴数据。

3. 修正Matplotlib的调用错误

原代码存在多处语法错误:

  • 文件重复打开且未关闭,改用with语句自动管理文件资源
  • plt.xlabel = "date"是错误赋值,正确写法是plt.xlabel("date")(函数调用)
  • 无用的plt.table = "test"和plt.yticks()需要移除

完整修正代码

import matplotlib.pyplot as plt
from collections import Counter

# 读取文件并统计频率
with open("thing.txt", "r") as f:
    # 读取所有行,去除换行符,收集有效值
    values = [line.strip() for line in f if line.strip()]
    # 统计每个值的出现次数
    freq_counter = Counter(values)

# 整理X轴(排序后的唯一值)和Y轴(对应频率)
sorted_values = sorted(freq_counter.keys())
x = sorted_values
y = [freq_counter[val] for val in sorted_values]

# 绘制折线图
plt.xlabel("date")
plt.ylabel("Frequency Count")
plt.plot(x, y, marker='o', c='g')
plt.title("Value Frequency Line Chart")

plt.show()

代码说明

  • with open(...):自动处理文件打开和关闭,避免资源泄漏
  • Counter(values):一键统计所有值的出现频率
  • sorted(freq_counter.keys()):对X轴的值排序,让折线图展示更直观
  • 修正后的plt.xlabel()、plt.ylabel():正确设置坐标轴标签

用示例数据thing.txt运行代码后,会生成X轴为['01','03','04','05','06']、Y轴为[1,1,2,1,1]的折线图,完美展示每个值的出现频率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 16:24:31