使用 Matplotlib 绘制多行数据直方图

本示例演示如何使用 Python 的 Matplotlib 库从文本文件中读取数据,并将其绘制为多个直方图。每个直方图对应文件中的一行数据,共 6 行。

import matplotlib.pyplot as plt

# 读取文件中的数据
with open('C:\Users\New\Desktop\output.txt', 'r') as file:
    lines = file.readlines()

# 创建一个 6 行 1 列的子图
fig, axs = plt.subplots(6, 1, figsize=(10, 20))

# 循环遍历每一行数据并绘制直方图
for i, line in enumerate(lines):
    # 分割每行数据为 10 个数字
    numbers = line.strip().split()
    
    # 将字符串类型的数字转换为浮点数
    numbers = [float(num) for num in numbers]
    
    # 绘制直方图
    axs[i].hist(numbers, bins=10)
    
    # 设置子图标题
    axs[i].set_title(f'Row {i+1}')

# 调整子图之间的间距
plt.tight_layout()

# 显示图形
plt.show()

代码解释:

  1. 导入 Matplotlib 库: import matplotlib.pyplot as plt
  2. 读取数据: 使用 with open(...) as file: 语句打开文本文件,并使用 readlines() 方法读取所有行。
  3. 创建子图: 使用 plt.subplots(6, 1, figsize=(10, 20)) 创建一个 6 行 1 列的子图,并设置图形大小为 10 英寸 x 20 英寸。
  4. 循环绘制直方图: 使用 for 循环遍历每一行数据,并执行以下步骤:
    • 使用 line.strip().split() 将每行数据分割为 10 个数字。
    • 使用列表推导将字符串类型的数字转换为浮点数。
    • 使用 axs[i].hist(numbers, bins=10) 绘制直方图,其中 bins=10 指定直方图的柱状数。
    • 使用 axs[i].set_title(f'Row {i+1}') 设置每个子图的标题。
  5. 调整子图间距: 使用 plt.tight_layout() 调整子图之间的间距,使它们不会重叠。
  6. 显示图形: 使用 plt.show() 显示生成的图形。

注意:

  • 请确保 output.txt 文件存在于代码所在目录中。
  • 文件中的每行必须包含 10 个数字,数字之间用空格隔开。
  • 可以根据需要调整 bins 参数来改变直方图的柱状数。

示例输出:

生成的图形将包含 6 个直方图,每个直方图对应 output.txt 文件中的一行数据。

应用:

本示例可以用于可视化来自文本文件的多行数据,例如实验数据、传感器数据等。

相关资源:

使用 Matplotlib 绘制多行数据直方图

原文地址: https://www.cveoy.top/t/topic/qnjk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录