Sort

對數據進行排序以繪製圓

  • April 30, 2021

在這裡,我有一個數據,我將使用 Gnuplot 繪製線條。使用程式碼

pl 'Sphere_ISOTEST_data.txt' w p

我得到下圖

這個

但是,使用

pl 'Sphere_ISOTEST_data.txt' w l

我得到以下資訊:

在此處輸入圖像描述

任何人都可以建議如何對數據進行排序,以便我可以繪製w l並僅獲取圓的周長。

這可以通過將笛卡爾座標轉換為極座標並按角度排序來解決。

我們可以將角度計算為atan2(y,x)

我們可以通過應用Schwartzian 變換使用這個計算出的數字對原始數據進行排序,其中角度用作臨時排序鍵:

awk -v OFS='\t' '{ print atan2($2,$1), $0 }' Sphere_ISOTEST_data.txt |
LC_ALL=C sort -g | cut -f 2-  >sorted.txt

awk程序根據文件中的值計算值atan2(),並使用製表符作為分隔符,在每行的原始行前面加上該值。然後該sort實用程序對數據進行排序並cut用於刪除臨時排序鍵。

請注意,我使用sort -g的是非標準的。該-g選項在實施時通常會啟用“通用數字排序”,我們將需要使用它,因為某些atan2()值非常小,因此將採用科學計數法。我們還需要使用 POSIX 語言環境 (" C")sort來正確讀取和排序數字。我們顯然可以通過在atan2()列印它們時修改值的輸出格式來解決這個問題,但這至少顯示了總體構想。

結果寫入sorted.txt.

結果圖

GNUTERM=png gnuplot -e 'set size square; pl "sorted.txt" w l' >sorted.png

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