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

