---
title: Liii STEM Gnuplot 教程第2期 - 二维图像绘制
description: Liii STEM Gnuplot 插件教程第2期，学习数据准备、plot命令详解、多曲线绘制和图表美化。
---

> ## Documentation Index
> Fetch the complete documentation index at: https://liiistem.cn/docs/llms.txt
> Use this file to discover all available pages before exploring further.


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

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

## 1 准备数据

在 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.txt`，`Windows：D:\exp_data.txt`。

## 2 绘制图形

`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 文档中，并且是可编辑的矢量图格式 。

![Gnuplot 数据点图示例](../../../images/gnuplot06.png)

## 3 选择数据列

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

**基本语法**：`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)
```

![绘图效果展示](../../../images/gnuplot07.png)

## 4 绘图风格

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

### **线图：`with lines`**

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

```bash
plot $data using 1:2 with lines
```

![Gnuplot 线图绘制示例](../../../images/gnuplot08.png)

### **点图：`with points`**

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

```bash
plot $data using 1:2 with points
```

![绘图效果展示](../../../images/gnuplot09.png)

### **线点图：`with linespoints`**

同时绘制数据点和连接线，是 `lines` 和 `points` 的组合，信息最完整。

```bash
plot $data using 1:2 with linespoints
```

![绘图效果展示](../../../images/gnuplot10.png)

### **脉冲图：`with impulses`**

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

```bash
plot $data using 1:2 with impulses
```

![绘图效果展示](../../../images/gnuplot11.png)

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

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

## 5 实战练习：绘制实验测量数据的折线图

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

**任务**：使用我们之前创建的 \`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 "测量值"
   ```

5) 运行该代码块。

**预期结果**：

![Liii STEM gnuplot25](../../../images/gnuplot25.gif)

**代码解析**：

- `set title`、`set xlabel`、`set ylabel`：这些是 set 命令，用于设置图表的全局属性。

- `set grid`：在图表背景中添加网格线。

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

- `ls 1`：在 plot 命令yarn中调用刚刚定义的线条样式1。

- `title "测量值"`：设置这条线在图例中的名称。

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

## 6 命令速查表

> 完整版参考：[Gnuplot官网](http://www.gnuplot.info/demo_4.6/)

| 命令/语句        | 功能         | 示例                        |
| ---------------- | ------------ | --------------------------- |
| 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)"     |
