You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

gnuplot:调整x轴刻度时如何正确设置xrange?

Gnuplot设置x轴范围后标签混乱的原因及解决方法

问题背景

数据文件throughput.txt内容:

100 100.0
500 499.8
1000 999.0
2000 1994.4
3000 2918.8
10000 8233.8
99999 9433.2

需求:绘图时所有x轴标签等间距排列,同时让100和99999对应的数据点清晰可见。

初始脚本:

set terminal png size 500,500

set output 'throughput.png'
set title 'Connection throughput'

plot 'throughput.txt' using 0:2:xticlabel(1) title "Throughput"

运行后得到的图像中,x轴标签等间距,但100和99999的数据点因位于边缘被遮挡;尝试添加set xrange [0,110000]后,x轴刻度混乱,数据点挤在左端。

原因分析

  • 使用using 0:2:xticlabel(1)时,0代表数据的行号索引(从0开始计数),此时x轴是按行号等间距排列的,和第一列的数值无关。
  • 添加set xrange [0,110000]后,gnuplot会把0-6的行号索引映射到0-110000的大范围中,所有数据点会集中在x轴最左端,同时自动生成的大数值刻度会和自定义的xticlabel重叠,导致显示混乱。

解决方法

方法1:调整行号范围实现边缘留白

直接基于行号的x轴逻辑,设置xrange给左右边缘留出空间,让数据点完整显示:

set terminal png size 500,500
set output 'throughput.png'
set title 'Connection throughput'
set xrange [-0.5:6.5]  # 行号范围是0-6,左右各加0.5的留白
plot 'throughput.txt' using 0:2:xticlabel(1) title "Throughput"

方法2:手动绑定刻度位置与标签

通过手动设置xtics,将自定义标签绑定到等间距的x轴位置上,同时控制x范围:

set terminal png size 500,500
set output 'throughput.png'
set title 'Connection throughput'
# 手动指定每个标签对应的x轴位置(0-6等间距)
set xtics ("100" 0, "500" 1, "1000" 2, "2000" 3, "3000" 4, "10000" 5, "99999" 6)
set xrange [-0.5:6.5]
plot 'throughput.txt' using ($0):2 title "Throughput"

内容的提问来源于stack exchange,提问作者anmomu92

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 00:03:25