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
相关产品推荐
相关产品推荐

