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

Gnuplot提取非数值列数据失败问题及脚本修正咨询

Gnuplot提取文本列数据显示NaN的解决方法

问题描述

我在Gnuplot脚本中尝试提取表格数据,数值列lh_01和rh_01提取正常,但Measure:volume列的路径信息无法提取,运行后该列显示为nan。

原脚本如下:

reset

set datafile missing "NaN"
set datafile columnheader

$Data << EOD
Measure:volume         lh_01    rh_01  
sub_001/2001476309_t1  7030.26  7353.44
sub_002/2026003745_t1  7652.64  8566.62
sub_003/0119972330_t1  6938.74  7489.41
sub_004/2022130250_t1  6619.97  6224.74
sub_005/2105171757_t1  7472.23  8635.48
sub_006/2060302238_t1  6612.52  7347.70
sub_007/2021110417_t1  7049.64  7137.09
sub_008/0152544707_t1  8327.11  8745.67
sub_009/0219080602_t1  7924.66  8694.33
sub_010/2018143733_t1  7605.58  8072.01
EOD

path_column = "Measure:volume"
left = "lh_01"
right = "rh_01"

set table $Temp
plot $Data using path_column:left:right with table
unset table

print $Temp

原运行结果:

gnuplot> load "test_plot_data.gp"
 nan     7030.26         7353.44
 nan     7652.64         8566.62
 nan     6938.74         7489.41
 nan     6619.97         6224.74
 nan     7472.23         8635.48
 nan     6612.52         7347.7
 nan     7049.64         7137.09
 nan     8327.11         8745.67
 nan     7924.66         8694.33
 nan     7605.58         8072.01

解决方法

需要做两处修改:

  • 文本列不能直接用列名提取,必须用stringcolumn()函数显式指定提取文本内容
  • 对于包含特殊字符(如冒号:)的列名,需要用columnheader()函数获取对应的列索引,避免解析错误

修改后的脚本:

reset

set datafile missing "NaN"
set datafile columnheader

$Data << EOD
Measure:volume         lh_01    rh_01  
sub_001/2001476309_t1  7030.26  7353.44
sub_002/2026003745_t1  7652.64  8566.62
sub_003/0119972330_t1  6938.74  7489.41
sub_004/2022130250_t1  6619.97  6224.74
sub_005/2105171757_t1  7472.23  8635.48
sub_006/2060302238_t1  6612.52  7347.70
sub_007/2021110417_t1  7049.64  7137.09
sub_008/0152544707_t1  8327.11  8745.67
sub_009/0219080602_t1  7924.66  8694.33
sub_010/2018143733_t1  7605.58  8072.01
EOD

path_column = "Measure:volume"
left = "lh_01"
right = "rh_01"

set table $Temp
# 用columnheader获取列索引,再用stringcolumn提取文本
plot $Data using (stringcolumn(columnheader(path_column))):columnheader(left):columnheader(right) with table
unset table

print $Temp

修改后的运行结果:

gnuplot> load "test_plot_data.gp"
 sub_001/2001476309_t1     7030.26         7353.44
 sub_002/2026003745_t1     7652.64         8566.62
 sub_003/0119972330_t1     6938.74         7489.41
 sub_004/2022130250_t1     6619.97         6224.74
 sub_005/2105171757_t1     7472.23         8635.48
 sub_006/2060302238_t1     6612.52         7347.7
 sub_007/2021110417_t1     7049.64         7137.09
 sub_008/0152544707_t1     8327.11         8745.67
 sub_009/0219080602_t1     7924.66         8694.33
 sub_010/2018143733_t1     7605.58         8072.01

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 08:48:12