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

Gnuplot按轴百分比放置标签问题及文本放置替代方法咨询

问题解决与解答

一、标签未显示的直接原因

  1. 脚本存在语法错误:第二个set label的at 0,缺少Y坐标值,gnuplot会忽略该标签
  2. 坐标设置错误:你把标签放在(0,0),但X轴是时间格式,0对应的是1970年的时间点,远在你的数据范围之外,自然看不到标签

二、时间轴对标签X坐标的影响

当开启set xdata time后,X坐标的数值不再是普通数值,而是Unix时间戳(从1970-01-01 00:00:00开始的秒数),因此不能直接用百分比数值指定位置,必须通过gnuplot的特殊坐标系统来实现相对位置。

三、实现坐标轴百分比位置标签的正确方法

推荐两种常用方案,按需选择:

方案1:使用屏幕坐标(screen)

屏幕坐标以整个绘图窗口为基准,(0,0)是窗口左下角,(1,1)是右上角,适合放置在窗口固定比例位置:

# 右对齐标签,避免超出窗口
set label sprintf("Download 24hr avg.: %6s Mb/sec", dw) at screen 0.9, screen 0.2 right
set label sprintf("Upload   24hr avg.: %6s Mb/sec", up) at screen 0.9, screen 0.1 right

方案2:使用绘图区域坐标(graph)

绘图区域坐标以坐标轴包围的区域为基准,(0,0)是绘图区左下角,(1,1)是右上角,适合放置在绘图内容内部:

set label sprintf("Download 24hr avg.: %6s Mb/sec", dw) at graph 0.9, graph 0.2 right
set label sprintf("Upload   24hr avg.: %6s Mb/sec", up) at graph 0.9, graph 0.1 right

四、修正后的完整gnuplot脚本

#! /usr/bin/gnuplot
set xdata time
set timefmt "%Y-%m-%dT%H:%M"
set format x "%m/%d %H:%M"
set ytics format "%.0s%c"
set xtics rotate by 60 right
set grid xtics
set grid ytics

# 替换原错误标签,使用屏幕坐标放置
set label sprintf("Upload   24hr avg.: %6s Mb/sec", up) at screen 0.9, screen 0.1 right
set label sprintf("Download 24hr avg.: %6s Mb/sec", dw) at screen 0.9, screen 0.2 right

set terminal pngcairo transparent size 1000,750
set output 'speed.png'
plot 'speed_1wk.dat' using 4:7 with linespoints title 'Download', \
     'speed_1wk.dat' using 4:8 with linespoints title 'Upload'
set output
set terminal x11

五、除set label外的文本放置方法

  • 坐标轴/标题标签:用set title、set xlabel、set ylabel设置全局标题和轴标签,适合固定位置的说明
  • 数据点标注:在plot命令中使用with labels样式,给特定数据点添加文本:
    plot 'speed_1wk.dat' using 4:7 with linespoints title 'Download', \
         '' using 4:8 with linespoints title 'Upload', \
         '' using (timecolumn(4)):(0):(sprintf("24h Avg: %.2f", dw)) with labels title ''
    
  • 图例嵌入:把平均值放在图例区域,通过key坐标定位:
    set key left top
    set label sprintf("Download 24hr avg.: %6s Mb/sec", dw) at key 0, key 1.2 right
    
  • 多子图布局:使用set multiplot创建小的空白子图,专门放置文本,适合复杂排版需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 07:45:16