xm-grace:通过bash批处理脚本自定义图例与优化图例文本
问题1:修改图例框外观的批处理选项
在你的combo.bfile批处理文件中添加以下Grace命令,可自定义图例的位置、字体大小/类型及边框样式:
设置图例位置:
推荐用相对位置预设(更适配页面尺寸),比如放在右上角:legend place right top也可以用绝对比例坐标(基于页面尺寸2560x2048):
legend loctype view legend position 0.85, 0.85loctype view表示坐标是页面的相对比例(范围0-1),position的两个值分别对应x、y方向的位置。调整字体大小与类型:
legend char size 1.8 # 字体大小可按需调整 legend font \"Helvetica\" # 指定字体,如Helvetica、Times等修改图例框样式:
legend box on # 显示边框(默认开启,off则隐藏) legend box color \"black\" # 边框颜色 legend box linewidth 1 # 边框线宽 legend box margin 0.2 # 框内文字与边框的间距 legend char gap 0.15 # 图例符号与文字的间距
将上述命令添加到批处理文件末尾即可生效。
问题2:通过Bash技巧简化图例文本(无需重命名文件)
不需要修改原文件命名,直接在Bash中处理文件名提取目标部分,动态为每条曲线指定图例文本。修改你的bash命令如下:
(cd "${output}/!plots" && # 匹配所有目标数据文件 input_files=(RMSD.prot*) # 构建gracebat的参数数组 grace_args=() for file in "${input_files[@]}"; do # 提取文件名中"RMSD.prot_"之后的部分(如从RMSD.prot_6nax得到6nax) legend_label="${file#RMSD.prot_}" # 依次添加图例文本和文件路径到参数列表 grace_args+=("-legend" "string" "$legend_label") grace_args+=("$file") done # 执行绘图命令 exec gracebat "${grace_args[@]}" -batch "${output}/!temp/combo.bfile" -printfile RMSD.prot.png -hardcopy)
原理说明:
${file#RMSD.prot_}是Bash参数扩展语法,会删除变量file开头的RMSD.prot_前缀,直接得到简化后的标签。- 循环遍历每个文件,用
-legend string <label>逐个指定对应曲线的图例,替代原来的-legend load(后者会直接用完整文件名作为图例)。
这种方式既保留了原文件的命名结构,又能得到简洁的图例文本。
内容的提问来源于stack exchange,提问作者James Starlight
相关产品推荐
相关产品推荐

