基于gnuplot+AWK修改氢键数据列选择逻辑生成条形图
修改AWK逻辑配合gnuplot生成氢键数据条形图
核心AWK逻辑修改
原脚本仅提取第3列作为x轴标签,现在需要根据lig_前缀判断提取目标列,同时保留Frac>0.05的筛选条件,对应的AWK命令如下:
awk '$5 > 0.05 { if ($1 ~ /^lig_/) print $3, $5; else if ($3 ~ /^lig_/) print $1, $5 }' hydrogen_bonds.dat
- 逻辑说明:
- 先筛选第5列(Frac)数值大于0.05的行
- 若第1列(Acceptor)以
lig_开头,输出第3列(Donor)和第5列数据 - 若第3列(Donor)以
lig_开头,输出第1列(Acceptor)和第5列数据 - 题目明确
lig_仅出现在其中一列,无需处理两列都含该前缀的情况
完整gnuplot脚本示例
将上述AWK命令整合进gnuplot脚本,生成2D条形图:
set terminal pngcairo enhanced font 'Arial,10' size 800,600 set output 'hbond_barplot.png' set title '氢键占比条形图(Frac>0.05)' set xlabel '配体相互作用对象' set ylabel '占比(Frac)' set yrange [0:*] # 设置x轴标签旋转避免重叠 set xtics rotate by 45 right # 读取AWK处理后的数据绘制条形图 plot '< awk ''$5 > 0.05 { if ($1 ~ /^lig_/) print $3, $5; else if ($3 ~ /^lig_/) print $1, $5 }'' hydrogen_bonds.dat' \ using 2:xtic(1) with boxes fill solid 0.7 title ''
- 脚本说明:
set terminal和set output指定输出格式为PNG图片xtics rotate设置x轴标签旋转45度,避免长标签重叠using 2:xtic(1)表示用第2列数据作为条形高度,第1列作为x轴标签with boxes fill solid设置实心条形样式
额外优化提示
- 如果你的数据文件用制表符分隔,需给AWK加上
-F'\t'参数,确保列识别正确:awk -F'\t' '$5 > 0.05 { if ($1 ~ /^lig_/) print $3, $5; else if ($3 ~ /^lig_/) print $1, $5 }' hydrogen_bonds.dat - 若需要调整条形颜色,可在
with boxes后添加linecolor rgb "#2E86AB"这类颜色参数
内容的提问来源于stack exchange,提问作者James Starlight
相关产品推荐
相关产品推荐

