You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Gnuplot中快速定位理想屏幕坐标放置标签及添加屏幕坐标系网格?

解决Gnuplot中屏幕坐标系标签定位与网格添加的问题

我太懂这种反复调试屏幕坐标放标签的痛苦了!分享两个我常用的高效方案,帮你省时间:

一、快速定位屏幕坐标系的标签位置

不用手动瞎猜数值,这两个方法直接拿捏:

  • 鼠标交互取坐标
    先开启鼠标功能:

    set mouse
    

    运行你的绘图命令(比如plot "data.txt")后,把鼠标移到你想放标签的位置,Gnuplot的终端会实时显示当前位置的屏幕坐标系数值(格式类似screen x: 0.32, y: 0.85)。直接把这个数值抄到set label命令里就行:

    set label "My Important Label" at screen 0.32, 0.85 font "Helvetica,14"
    
  • 用相对比例快速占位
    屏幕坐标系的范围是(0,0)(左下角)到(1,1)(右上角),如果不需要绝对精确的位置,可以直接用比例值快速设置:

    • 左上角:screen 0.1, 0.9(留10%边距)
    • 底部居中:screen 0.5, 0.1
    • 右侧中间:screen 0.9, 0.5
      之后再根据实际显示微调0.01-0.05的数值,比从零试快多了。
  • 对齐选项优化位置
    配合标签的对齐参数,不用纠结坐标的精确点:

    set label "Right-aligned Text" at screen 0.95, 0.5 right  # 标签右边缘对齐x=0.95的位置
    set label "Centered Title" at screen 0.5, 0.95 center    # 标签中心对齐坐标点
    

二、在屏幕坐标系添加网格

Gnuplot默认网格是绑定数据坐标系的,要做屏幕全局网格,用set object循环画线是最靠谱的方案:

完整脚本示例

# 先定义网格的样式:灰色虚线,细线条
set linestyle 1 dashtype 2 linecolor rgb "#aaaaaa" linewidth 0.5

# 绘制水平网格线(从y=0到y=1,步长0.1)
do for [y_pos=0:1:0.1] {
    set object line from screen 0, y_pos to screen 1, y_pos linestyle 1
}

# 绘制垂直网格线(从x=0到x=1,步长0.1)
do for [x_pos=0:1:0.1] {
    set object line from screen x_pos, 0 to screen x_pos, 1 linestyle 1
}

# 别忘了把网格放在底层,不遮挡你的数据图
set object layer bottom

# 然后正常绘制你的图形
plot sin(x)

自定义调整

  • 调整步长:把0:1:0.1改成0:1:0.2就能得到更稀疏的网格
  • 改变样式:修改linestyledashtypelinecolor可以换成实线、彩色网格
  • 局部网格:如果只需要上半部分网格,把y_pos的范围改成0.5:1:0.1就行

额外小提示

如果经常需要这类设置,可以把屏幕网格和标签定位的常用命令存成一个gnuplotrc配置文件,每次启动Gnuplot自动加载,省得重复写!

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

火山引擎 最新活动