Appearance
美化图表—标题、坐标轴与图例
在第一期的plot sin(x)代码中,我们图表,函数sin,tan,轴x,y分别单独命名。本期我们将介绍使用 set title、set xlabel、set ylabel 添加图表标题和坐标轴说明(包括单位和含义)。
一、标题与标签
标题概括图表核心内容,坐标轴标签说明变量与单位,两者不仅提升可读性、避免误解,也是满足学术或技术出版要求的必要元素。
在这里
Shift+Enter是换行

基本语法
set title
该命令用于设置显示在图表正上方的标题。
set title {"标题文本"} {选项}标题文本:用引号括起来的字符串。
set xlabel和set ylabel
这两条命令分别设置 X 轴和 Y 轴的说明文字。为了让信息更完整,建议在标签中包含单位。
set xlabel {"轴标签文本"} {选项}
set ylabel {"轴标签文本"} {选项}小技巧:Gnuplot 支持增强文本模式(Enhanced text),可以通过添加特殊语法实现上下标、希腊字母等。例如,
set ylabel "温度 ({}^\\circ C)"可以显示摄氏度符号。不过,在 LiiiSTEM 环境中,您也可以直接使用 Unicode 字符,如℃。
标题设置详解
- 基本标题
最简单的形式就是直接添加文本:
set title "正弦波函数"
plot sin(x)效果:图表上方显示“正弦波函数”。
- 字体控制
可以使用 font 选项指定字体名称和大小:
set title "正弦波函数" font "Times,20"字体名称取决于系统支持的字体(如 “Arial”、“Times”、“Helvetica”),字号以点(pt)为单位。
- 文本颜色
通过 textcolor(简写 tc)设置颜色:
set title "重要结果" textcolor rgb "red"颜色可以用颜色名称(如 “red”、“blue”)、RGB 十六进制(如 “#FF0000”)或颜色变量表示。
- 标题位置
默认标题位于图表上方居中。可以通过 offset 微调位置:
set title "偏移标题" offset 0, -1 # 向下偏移 1 个字符高度
offset后面跟两个数值:水平偏移(字符宽度为单位)、垂直偏移(字符高度为单位)。正值向右/向上,负值向左/向下。
- 多行标题
如果需要多行标题,可以在文本中使用换行符 \n:
set title "第一行\n第二行"注意:换行符在部分终端中可能需要转义,建议用双引号括起来。
坐标轴标签设置
- 基本标签
set xlabel "时间 (s)"
set ylabel "速度 (m/s)"
plot 'data.txt' using 1:2效果:x 轴下方显示“时间 (s)”,y 轴左侧显示“速度 (m/s)”。
- 包含单位和含义
在科学绘图中,标签通常包含变量名和单位,例如:
“温度 (K)”“压力 (Pa)”“浓度 (mol/L)”
确保单位使用标准符号,并用括号括起来,与变量名之间留一个空格(如“温度 (K)”),这是常见的规范。
- 字体与颜色
与标题类似,可以使用 font 和 textcolor 选项:
set xlabel "频率 (Hz)" font "Arial,14" textcolor rgb "blue"- 位置微调
有时标签可能太靠近坐标轴数字,可以使用 offset 调整距离:
set xlabel "时间 (s)" offset 0, 1 # 向下移动一点(正垂直偏移)
set ylabel "振幅" offset 2, 0 # 向右移动一点注意:对于 y 轴标签,默认位置是左侧垂直居中。偏移量可根据需要调整。
- 旋转标签
如果标签文字过长,可以旋转以节省空间:
set ylabel "非常长的坐标轴标签" rotate by 90
rotate by 角度可以让标签旋转指定度数(通常 90 度用于纵轴,但 Y 轴默认已经是纵向,旋转 0 度可变为水平)。
特殊字符与格式化
科学绘图常需要希腊字母、上标/下标、数学符号等。Gnuplot 支持通过 Enhanced 文本模式(多数终端默认开启)使用类似 LaTeX 的语法。
- 常用特殊符号
希腊字母:使用
{/Symbol 字母名},例如{/Symbol a}显示 α,{/Symbol b}显示 β。或者直接使用 Unicode(需终端支持)。上标:
x^2显示 x2,x^{y+z}显示 xy+z。下标:
x_2显示 x_2,x_{i+1}显示 x_i+1。组合:可以混合使用,如
T_{c}^{2}显示 T_c2。
示例:
set xlabel "温度 (°C)" # 显示摄氏度符号
set ylabel "吸收系数 ({/Symbol a}) (cm^{-1})"- 常见示例
| 效果 | 代码 |
|---|---|
| 速度 (m/s) | "速度 (m/s)" |
| 温度 (K) | "温度 (K)" |
| 角度 (θ) | "角度 ({/Symbol q})" |
| 应力 (σ) | "应力 ({/Symbol s})" |
| 面积 (m²) | "面积 (m^2)" |
| 体积 (cm³) | "体积 (cm^3)" |
| 浓度 (mol/L) | "浓度 (mol/L)" |
二、图例管理
在 Gnuplot 中,图例(Key)是图表的重要组成部分,用于标识每条曲线的含义。本文将详细介绍如何通过 set key 命令灵活控制图例的位置与样式,以及如何使用 title 选项为每条曲线指定名称。
图例位置控制
- 基本位置关键词
Gnuplot 提供了直观的关键词来快速定位图例 :
| 命令示例 | 效果 |
|---|---|
| set key left | 图例位于图形左侧 |
| set key right | 图例位于图形右侧(默认) |
| set key top | 图例位于图形顶部 |
| set key bottom | 图例位于图形底部 |
| set key center | 图例位于图形中央 |
- 组合位置
关键词可以组合使用,实现更精确的定位 :
set key top left # 左上角
set key top right # 右上角(默认)
set key bottom left # 左下角
set key bottom right # 右下角
set key center right # 右侧居中图例样式美化
- 边框控制
set key box # 显示边框
set key nobox # 隐藏边框(默认)
set key box lw 2 lc rgb "gray50" # 边框线宽2,灰色- 背景与透明
set key box opaque # 不透明背景(遮盖后面的图形)
set key box transparent # 透明背景- 图例条目样式
set key spacing 1.5 # 条目之间的行间距(默认1.25)
set key width 2 # 图例框宽度
set key height 1 # 图例框高度
set key samplen 2 # 图例中样例线条的长度(默认4)可以通过 samplen 调整样例线的长度,如果默认的线条长度不足以清楚显示线型(如虚线),可以适当增大该值 。
- 文本与对齐
set key font "Times,12" # 设置字体和大小
set key textcolor rgb "blue" # 设置文字颜色
set key Left # 文本左对齐(注意大写L)
set key reverse # 交换样例线和文本的位置
set key reverse Left # 文本左对齐且样例线在右侧reverse 通常与 Left 结合使用,让曲线名称出现在样例线之后,文本向左对齐 。
- 图例标题
可以为整个图例添加标题 :
set key title "曲线说明" # 简单标题
set key title "Powers of x" font "Helvetica,16" # 带字体设置的标题需要注意的是,如果同时启用 box 和标题,有时会发生对齐冲突,可能需要调整 。
定制曲线名称
- 基本用法
在 plot 命令中,使用 title 为每条曲线指定图例名称 :
plot sin(x) title "正弦曲线", \
cos(x) title "余弦曲线"如果不想让某条曲线出现在图例中,使用 notitle:
plot sin(x) notitle, cos(x) title "余弦曲线" # 第一条曲线无图例- 使用数据文件中的列标题
如果数据文件的第一行包含列名称,可以自动将其作为图例标题 :
# 数据文件 data.csv 第一行为:Time Temperature Pressure
plot 'data.csv' using 1:2 title columnhead(2), \
'data.csv' using 1:3 title columnhead(3)更简洁的方式是设置全局选项:
set key autotitle columnhead # 自动使用列标题作为图例
plot 'data.csv' using 1:2, '' using 1:3- 动态生成标题
在循环绘图中,可以动态构建标题 :
plot for [i=2:6] 'datafile' using i title "第".i."列数据"或者使用列标题:
plot for [i=2:6] 'datafile' using i title columnhead(i)- 引用说明
title 后的文本可以是:
带引号的字符串:
title "实验数据"字符串表达式:
title sprintf("T=%dK", temp)特殊值:
title columnhead(N)使用第N列的第一行作为标题
三、坐标轴范围
默认情况下 Gnuplot 会自动设定坐标轴范围,但在聚焦局部细节、剔除异常值、统一多图比例或追求美学效果时,手动调整范围更为合适。
基本语法
set xrange和set yrange
语法为:
set xrange [最小值:最大值]
set yrange [最小值:最大值]范围可以留空,表示自动。例如,将 X 轴范围限定在 0 到 6,Y 轴从 0 开始:
set xrange [0:6]
set yrange [0:*] # 最小值固定为0,最大值自动注意:设置范围时要确保所有数据点仍在可视区域内,否则部分曲线可能被裁剪。
- 恢复自动缩放
如果想回到自动范围,可以使用:
set xrange restore # 恢复上一次手动设置前的自动范围
set autoscale x # 明确开启 x 轴自动缩放或者直接不加参数:
set xrange [*:*] # * 表示自动- 反向轴
可以通过将最小值大于最大值来实现坐标轴反向:
set xrange [10:0] # x 轴从 10 到 0(反向)这在某些特殊绘图(如深度剖面)中很有用。
进阶用法
- 相对范围
有时我们希望坐标轴范围相对于数据的最大值/最小值进行扩展或收缩,可以使用 * 配合偏移:
set xrange [*:10] # 最小值自动,最大值固定为 10
set yrange [-2:*] # 最小值固定 -2,最大值自动
set xrange [*:*] # 完全自动(等同于恢复自动缩放)还可以使用 set offsets 在自动范围基础上增加边距:
set offsets 1, 1, 0.1, 0.1 # 左、右、下、上额外留出的空白offsets 会在自动计算的范围上增加边距,避免曲线紧贴边框。
- 对数坐标轴
如果使用对数坐标(set logscale),设置范围时需注意数值应为正数:
set logscale yset yrange [1e-2:1e2] # 对数轴,范围从 0.01 到 100- 三维绘图
对于三维图(splot),还有 set zrange 控制 z 轴范围,用法完全相同。
四、网格与边框
网格线能够极大地提升图表的可读性,帮助读者快速估算数据点的数值。
最简单的用法是:
set grid默认情况下,set grid 会在主刻度位置绘制灰色虚线网格。您还可以进一步定制网格的样式和密度:
set grid xtics ytics # 明确指定在 X 和 Y 主刻度上绘制网格
set grid mxtics mytics # 同时在次刻度上绘制更细的网格五、实战练习:将第 3 期的图表进行全面的美化包装。
现在,我们将应用以上所有美化技巧,对上一期教程中的实验测量数据图表进行一次全面的升级改造。
原始数据回顾(exp_data.txt 文件内容):
1 2.3
2 4.1
3 5.5
4 4.8
5 7.2任务:生成一幅标题清晰、坐标轴带单位、图例合理、坐标轴范围适当、带网格的专业折线图。
在 LiiiSTEM 中新建一个 Gnuplot 代码块,输入以下完整脚本:
# ========== 全局设置 ==========
# 标题与坐标轴标签
set title "实验测量数据趋势图" font ",16" # 设置字体大小(可选)
set xlabel "测量序号" font ",12"
set ylabel "数值 (m)" font ",12"
# 图例设置:放置在右下角,并添加浅色边框
set key bottom right box
# 坐标轴范围:X轴从0到6,Y轴从0到8(留出一点空白)
set xrange [0:6]
set yrange [0:8]
# 添加网格线(主刻度)
set grid
# ========== 自定义线条样式 ==========
# 定义样式1:红色线,圆形点,点大小为1.5,线宽2
set style line 1 lc rgb 'red' pt 7 ps 1.5 lw 2
# ========== 绘图 ==========
plot "exp_data.txt" using 1:2 with linespoints ls 1 title "测量值"Liii STEM 中操作流程:

代码解析:
标题与标签:图表上方显示了“实验测量数据趋势图”,X 轴和Y 轴分别标注了“测量序号”和“数值 (m)”,信息完整。
图例:右下角出现了一个带框的图例,其中显示了“测量值”对应的红色线条和点的样式。
坐标轴范围:X 轴从0到6(比实际数据稍宽),Y 轴从0到8(数据最大值7.2,留有余地),使得整个图表看起来更舒适。
网格:灰色虚线网格均匀分布,极大地方便了数值的估算。
线条样式:自定义的红色线条与圆点,线宽适中,视觉效果突出。
在 Liii STEM 中,您还可以继续对图表中的文字、线条进行点击编辑,微调位置和样式,实现完全符合要求的最终输出。
六、命令速查表
完整版参考:Gnuplot官网
| 命令 | 功能 | 示例 |
|---|---|---|
| set title "..." | 设置图表标题 | set title "实验结果" |
| set xlabel "..." | 设置X轴标签 | set xlabel "时间 (s)" |
| set ylabel "..." | 设置Y轴标签 | set ylabel "位移 (m)" |
| set key <位置> | 控制图例位置 | set key top left |
| plot ... title "..." | 指定曲线图例名 | plot "data.dat" title "测量值" |
| set xrange [min:max] | 设置X轴范围 | set xrange [0:100] |
| set yrange [min:max] | 设置Y轴范围 | set yrange [-10:10] |
| set grid | 添加网格线 | set grid |