如何在GNUPLOT中仅显示指定xtics?Matrix绘图场景设置问题
gnuplot矩阵绘图自定义xticks问题解决
使用如下数据集执行plot $data matrix columnheaders rowheaders with image绘图后,修改xticks时遇到两个问题:
$data << EOD xxx -2 -1 0 1 2 0 4 5 6 -3 -1 1 3 4 7 -4 -2 2 2 3 6 6 4 3 4 -3 -6 4 1 EOD
遇到的问题
- 执行
set xtics add ("T" 0.577)时,标签"T"未出现在预期的0和1之间 - 执行
unset xtics+set xtics ("T" 0.577)+replot后,原数据集的xtics依然存在,无法仅显示"T"标签
原因分析
用matrix columnheaders参数绘图时,gnuplot会自动将列头的数值(-2、-1、0、1、2)作为x轴的实际刻度值,而非列索引(0、1、2、3、4):
- 你预期的0和1是列头的数值,对应x轴位置就是0和1,中间点是0.5,0.577并非这个位置,所以标签不在预期区域;
- 直接
unset xtics后重新设置,gnuplot重绘时仍会读取列头自动生成刻度,必须先关闭自动刻度行为。
解决方案
1. 让标签显示在0和1之间
将自定义刻度位置改为0和1的中间值0.5:
set xtics add ("T" 0.5) replot
2. 仅显示自定义标签"T"
需要先阻止gnuplot自动从列头生成刻度,再设置自定义刻度:
方法一:绘图时禁用自动xtics,再手动设置
plot $data matrix columnheaders rowheaders with image noxtics set xtics ("T" 0.5) replot
方法二:关闭自动刻度生成后设置自定义刻度
set xtics nomirror autoscale fix # 关闭自动读取列头的行为 unset xtics set xtics ("T" 0.5) replot
如果需要保留原列头刻度并添加自定义标签,可直接指定所有刻度:
set xtics (-2, -1, 0, "T" 0.5, 1, 2) replot
内容的提问来源于stack exchange,提问作者Pierre G.
相关产品推荐
相关产品推荐

