我正在使用 xmgrace 的 Gracebat 使用以下批处理脚本生成条形图。
s0 line type 0
S0 SYMBOL COLOR 4
S0 SYMBOL FILL 1
s0 type BAR
## Bar fill. Only 1 (black) is available.
S0 FILL WITH COLOR
S0 FILL COLOR 3
## Outline width.
S0 SYMBOL LINEWIDTH 2
# options for image output
WORLD XMIN 0
WORLD YMIN 0
PAGE SIZE 800, 600
第一个问题是,有时脚本会自动在 X 上设置 0.5 的间距,而我始终需要 1。以下是示例:
如何通过批处理文件中的某些选项消除那些未使用的 0.5 间距?
第二个问题(同样在 X 轴上):有时图表覆盖 2 上更广泛的值,而没有任何数据:
是否可以根据初始数据集自动限制 XMAX(但无需在批处理脚本中手动设置,因为我将其应用于不同的 xvg 文件)?
答案1
如何通过批处理文件中的某些选项消除那些未使用的 0.5 间距?
和XAXIS TICK MAJOR 1
。
是否可以根据初始数据集自动限制XMAX?
这文档说
graphno AUTOSCALE TYPE SPEC
设置自动缩放方法以使用数据的最小值和最大值。
所以人们可能认为G0 AUTOSCALE TYPE SPEC
会这样做,但事实并非如此,至少在 Xmgrace 的稳定版本中没有。
另一种方法是使用程序(例如 )从数据文件中提取 X 轴和 Y 轴的最大值awk
,并使用它来生成适当的批处理命令。比如说,将其另存为batchplot
:
awk '
NR==1{
max1=$1
max2=$2
}
$1>max1{max1=$1}
$2>max2{max2=$2}
END{printf "WORLD XMAX %s\nWORLD YMAX %s\n",max1,max2 >> "a.xmg"}
' a.dat
xmgrace -nosafe -batch a.xmg a.dat
使用 使其可执行chmod +x batchplot
,并用批处理和数据文件的名称替换a.xmg
和a.dat
,然后运行它。它将 X 和 Y 轴限制附加到批次中,然后运行它。
建议:如果您计划使用更复杂的绘图功能,Xmgrace 的命令行界面将会很痛苦。这个和你的另一个问题已经表明了这一点。在这种情况下,我推荐 GNUPlot 或 Matplotlib,它们天生就是可编写脚本的。