Skip to content

通过二维数据绘制二维图像

在本教程中,我们将完整地走一遍从数据准备到图表生成的全过程,深入讲解 Gnuplot 最核心的绘图命令!

一、准备数据

在 Liii STEM 中,您有两种方式为 Gnuplot 准备数据文件。

方法一:手动创建命令行数据块(适合少量数据)

准备一组简单的实验数据作为数据块,第一列作为 X 轴数据,第二列作为 Y 轴数据:

bash
$data << EOD
1 2.3
2 4.1
3 5.5
4 4.8
5 7.2
EOD

方法二:引入外部数据文件(适合已有数据文件)

如果您已有数据文件(如 data.txt, measurements.log 等),可以直接在后续的 Gnuplot 代码块中通过文件路径引用它。

文件内容示例:

bash
#表格1.
1 2.3
2 4.1
3 5.5
4 4.8
5 7.2

请确保您知道文件的准确存储位置,例如 Mac:~/Documents/data.txtWindows:D:\exp_data.txt

二、绘制图形

plot 是 Gnuplot 中最基本和最常用的命令,用于绘制二维图形 。它的基本语法是:

bash
plot "文件名" [可选修饰词]

文件名:这是您要绘图的数据文件的名称,也可以使用$data替代。如果文件不在 Gnuplot 的当前工作目录中,您需要使用完整的路径。

基础示例

比如我们在 LiiiSTEM 中插入一个 Gnuplot 代码块,并输入以下最简单的绘图命令:

bash
$data << EOD
1 2.3
2 4.1
3 5.5
4 4.8
5 7.2
EOD

plot $data

当您运行这个代码块时,Gnuplot 会:

  1. 读取数据。

  2. 默认将文件中的第一列作为 X 轴数据第二列作为 Y 轴数据

  3. 生成一个由数据点构成的简单点图。

运行后,图表便会直接渲染在您的 Liii STEM 文档中,并且是可编辑的矢量图格式 。

三、选择数据列

在很多情况下,您的数据文件可能不止两列,或者您想交换 X 轴和 Y 轴的数据来源。这时就需要用到using语句。usingplot 命令中最常用的数据修饰符,用于指定将文件中的哪些列绘制到图表上 。

基本语法using <X列> : <Y列>

  • using 1:2:这是最常见的用法,表示使用文件中的第 1 列作为 X 轴,第 2 列作为 Y 轴。这与默认行为一致。

  • using 2:1:表示使用第 2 列作为 X 轴,第 1 列作为 Y 轴

  • using 1:这是一个简写,等同于 `using 0:1`,即使用数据点的行号(从0开始)作为 X 轴,第1列作为 Y 轴

进阶用法

using 的功能远不止选择列号。您还可以使用表达式对数据进行实时处理

  • 表达式using 1:($2*100)`这表示 X 轴使用第 1 列,Y 轴使用第 2 列的值乘以 100 后的结果。括号 ()$2(代表第2列的简写)是实现这个功能的关键 。

  • 字符串标签:如果数据文件的第一行是列标题(例如 Time Data),您可以直接用标题名来选择列,如 using "Time":"Data"

示例:假设我们只想绘制之前数据文件中的数值,但希望 Y 轴的单位是厘米(原数据为米),可以这样写:

bash
$data << EOD
1 2.3
2 4.1
3 5.5
4 4.8
5 7.2
EOD

plot $data using 1:($2*100)

四、绘图风格

with 语句用于控制图表中数据的呈现风格。Gnuplot 提供了丰富的绘图风格,下面介绍四种最常用的。

线图:with lines

将数据点按顺序用直线连接起来,适合展示趋势。

bash
plot $data using 1:2 with lines

点图:with points

只绘制数据点本身,不进行连线,适合展示数据分布。

bash
plot $data using 1:2 with points

线点图:with linespoints

同时绘制数据点和连接线,是 linespoints 的组合,信息最完整。

bash
plot $data using 1:2 with linespoints

脉冲图:with impulses

从 X 轴(或底线)到每个数据点绘制一条垂直线,形似脉冲,适合展示离散序列或频谱。

bash
plot $data using 1:2 with impulses

小贴士:您可以在一个 `plot` 命令中同时绘制多种风格,以便对比:

bash
plot $data using 1:2 with linespoints, \
     "" using 1:2 with impulses

五、实战练习:绘制实验测量数据的折线图

现在,让我们将所有知识整合起来,完成一个完整的实战练习。

任务:使用我们之前创建的 `exp_data.txt` 文件,绘制一幅带有标题、坐标轴标签的折线图,并对图表进行美化。

步骤

  1. 在 Liii STEM 中,新建或打开一个笔记文件。

  2. 确保 exp_data.txt 文件位于一个你知道的路径下(例如,与笔记文件相同的目录)。

  3. 插入一个新的 Gnuplot 代码块

  4. 在代码块中输入以下完整命令:

    bash
    # 1. 设置图表标题和坐标轴标签
    set title "实验测量数据趋势图"
    set xlabel "测量序号"
    set ylabel "数值 (m)"
    
    # 2. 执行绘图命令(使用数据文件)
    #    使用第1列作为X轴,第2列作为Y轴
    
    plot "exp_data.txt" using 1:2 with linespoints ls 1 title "测量值"
  1. 运行该代码块。

预期结果

代码解析

  • set titleset xlabelset ylabel:这些是 set 命令,用于设置图表的全局属性。

  • set grid:在图表背景中添加网格线。

  • set style line 1 ...:自定义一个编号为1的线条样式,包括颜色(lc rgb)、点类型(pt)和点大小(ps)。

  • ls 1:在 plot 命令yarn中调用刚刚定义的线条样式1。

  • title "测量值":设置这条线在图例中的名称。

至此,您已经完成了在 LiiiSTEM 中使用 Gnuplot 从数据到图表的全流程。您可以自由修改数据文件或绘图命令,图表会随之更新,非常适合进行探索性的数据分析。

六、命令速查表

完整版参考:Gnuplot官网

命令/语句功能示例
plot "文件名"核心绘图命令plot "mydata.dat"
using <X>:<Y>选择数据列using 2:3(用第2、3列绘图)
with <风格>设置绘图风格with points (绘制散点)
set title "..."设置图表标题set title "实验结果"
set xlabel "..."设置X轴标签set xlabel "时间 (s)"