我生成了一個數據文件,格式如下:
0.1
Analytic value = 340.347685734
Approximated value = 332.45634555
--
0.2
Analytic value = 340.936745872
Approximated value = 332.57893789
--
0.3
... and so on
我想根據輸入參數(0.1、0.2等繪制matplotlib/gnuplot中的分析值和近似值。通常,在生成數據文件之前,我使用awk腳本生成它們,該腳本將三個值放在三列中,這很容易繪制。然而,在這里,我意外地以不同的格式生成了數據文件。如何將此文本文件轉換為以下內容(可能使用regex或awk!):
0.1 340.347685734 332.45634555
0.2 340.936745872 332.57893789
0.3 ... and so on
或者有沒有一種方法可以在不使用gnuplot/matplotlib轉換格式的情況下繪制數據?
編輯:我曾試圖用python 3來做這件事。以下是我的代碼:
file = open("myFile.dat",'r')
newFile = open("newFile.dat", 'a')
for i in range(4000):
col1 = file.readline().split[-1]
col2 = file.readline().split[-1]
col3 = file.readline().split[-1]
_ = file.readline().split[-1]
line = col1 + " " + col2 + " " + col3
newFile.write(line)
然而,我得到了一些錯誤TypeError: 'builtin_function_or_method' object is not subscriptable
,我不理解,我認為這是一個非常低效的代碼。這就是我在SE中詢問的原因。到目前為止提出的所有解決方案都非常有效。我用awk
標記了這個解決方案作為已接受的答案,因為它簡單而優雅。此外,我很欣賞只使用gnuplot的解決方案,它也為我揭示了gnuplot中的一個方面。
我將以如下方式利用GNU
AWK
來完成這項任務,讓file.txt
的內容then
doess output
解釋:對于第
--
行,只需打印換行符并轉到下一行,對于所有其他行,輸出最后一個字段,后面跟著空格,而不是換行符。如果您想了解更多關于NF
的信息,請閱讀8個強大的Awk Built-in變量–FS、OFS、RS、ORS、NR、NF、FILENAME、FNR(在GNU Awk中測試5.1.0)