返回首页

使用 Python matplotlib 从 CSV 构建图表

本文描述了使用 matplotlib 从 CSV 构建 2D 图表的脚本。示例:基本绘图、添加照度阈值、网格、图例。优势和包安装。

从 CSV 绘制图表:Python 中的 matplotlib 示例
Advertisement 728x90

Python Matplotlib 绘制 CSV 数据图表

一段使用 matplotlib 库的 Python 脚本,能让你快速从 CSV 文件生成图表。本例使用名为 LiLog.csv 的文件,包含行号、光照强度(Lx)、温度、时间、日期和 Unix 时间戳等列。图表以时间戳(第 6 列)为 X 轴,光照强度(第 2 列)为 Y 轴。

你需要 Python 3+matplotlib 和内置的 csv 模块。检查 Python 解释器位置用 where python,建议使用干净安装,避免 Cygwin 或 Inkscape 的捆绑包。

安装依赖:

Google AdInline article slot
pip install matplotlib numpy

基础 2D 折线图脚本

这段代码加载数据、解析 CSV 并绘制折线图:

import matplotlib.pyplot as plt
import csv

X = []
Y = []

with open('LiLog.csv', 'r') as datafile:
    plotting = csv.reader(datafile, delimiter=',')  # 本例使用逗号分隔
    
    for ROWS in plotting:
        X.append(float(ROWS[5]))
        Y.append(float(ROWS[1]))

plt.plot(X, Y)
plt.title('基于 CSV 的折线图')
plt.xlabel('X')
plt.ylabel('Y')
plt.show()

XY 列表填充指定列的浮点数值。csv.reader 处理分隔符(本例为逗号——检查你的文件)。plt.plot 绘制折线,show() 打开显示窗口。

高级图表:阈值线、标注和网格

添加水平阈值线(63 Lx)、网格、图例和旋转标签:

Google AdInline article slot
import matplotlib.pyplot as plt
import csv

X = []
Y = []

with open('LiLog.csv', 'r') as datafile:
    plotting = csv.reader(datafile, delimiter=',')
    
    for ROWS in plotting:
        X.append(float(ROWS[5]))
        Y.append(float(ROWS[1]))

threshold = 63.0
T = [threshold] * len(Y)

plt.plot(X, Y)
plt.plot(X, T)
plt.title('光照变化')
plt.xlabel('时间,[s]')
plt.ylabel('光照强度, [Lx]')
plt.grid()
plt.xticks(rotation=-90)
plt.legend(['光照强度', f'阈值 {threshold} Lx'])
plt.show()

检查数组长度:print(len(X), len(Y))。数据类型为 list[float]。交互功能包括通过 matplotlib 窗口工具栏缩放和平移。

依赖与安装

列出已安装包:pip freeze。典型的 matplotlib 输出:

  • contourpy==1.3.3
  • cycler==0.12.1
  • fonttools==4.62.1
  • kiwisolver==1.5.0
  • matplotlib==3.10.8
  • numpy==2.4.4

单独安装:pip install matplotlib numpy

Google AdInline article slot

为什么 Matplotlib 是数据可视化的利器

  • 免费开源。
  • 交互式:支持缩放、保存为 PNG、自定义坐标轴和网格。
  • 跨平台:Windows、Linux(需 GUI)。
  • 用 PyInstaller 打包成 EXE,便于分享。
  • 体积小巧:只需一个 .py 文件。
  • 无头自动化:命令行运行,无需图形界面。

局限性

  • 实时绘图(如 COM/TCP 数据流)需线程或 FuncAnimation。
  • 大数据集(>100 万点)可能变慢——用 numpy 数组优化。

实用技巧

  • numpy 处理数组:X = np.array(X) 加速绘图。
  • CSV 分隔符:尝试 delimiter=','';',复杂文件切换到 pandas
  • 坐标轴标签:plt.xlabelplt.ylabel 带单位(如 s、Lx)。
  • 图例:plt.legend(['数据', '阈值']) 用于多条线。
  • 网格:plt.grid() 提升可读性。

Python + Matplotlib 是快速可视化 CSV 实验数据的首选组合。特别适合传感器日志分析,如光照随时间变化。

— Editorial Team

Advertisement 728x90

继续阅读