Xmgrace

批處理模式下的軸縮放

  • October 27, 2020

我正在使用 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 文件,因此無需在批處理腳本中手動設置)?

如何通過批處理文件中的某些選項消除那些未使用的 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,它們天生就是可編寫腳本的。

引用自:https://unix.stackexchange.com/questions/616591