批处理模式下的轴缩放

批处理模式下的轴缩放

我正在使用 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.xmga.dat,然后运行它。它将 X 和 Y 轴限制附加到批次中,然后运行它。

建议:如果您计划使用更复杂的绘图功能,Xmgrace 的命令行界面将会很痛苦。这个和你的另一个问题已经表明了这一点。在这种情况下,我推荐 GNUPlot 或 Matplotlib,它们天生就是可编写脚本的。

相关内容