2014-05-15 35 views
1

我正試圖在數據文件中繪製一些測量值。下面是數據的一個簡單的例子:來自數據文件的幾個圖

1 7 100 
1 15 200 
1 31 300 
2 7 150 
2 15 300 
2 31 400 

正如你看到的,有三列。第二列應該是x軸,第三列包含該值。但是,我應該如何讓gnuplot爲第一列中的每個不同值創造一個新的陰謀?上述 的例子應該產生兩個地塊,一個叫1和一個叫2.

回答

3

至少有兩種不同的方式去了解這一點:

1)如果你知道有多少項目有每個設置,你可以使用every。以下曲線的數據點0至2和3至5分別(第一個數據點是在gnuplot的零)與您在上面呈現的數據樣式:

plot "data" u 2:3 every ::0::2 title "First block", \ 
"data" u 2:3 every ::3::5 title "Second block" 

如果數據塊被方便地通過一個空的分離線,這可以通過使用數據塊爲單位進行,而不是數據點:

# Data separated by empty lines: 
1 7 100 
1 15 200 
1 31 300 

2 7 150 
2 15 300 
2 31 400 

情節上面:

plot "data" u 2:3 every :::0::0 title "First block", \ 
"data" u 2:3 every :::1::1 title "Second block" 

2)如果你不知道每個有多少項你可以使用一個條件圖,告訴gnuplot,如果列1等於1,它應該繪製點,否則它應該被忽略(對於第二個圖,同樣的情況,但是在這種情況下,列1必須等於2):

plot "data" u 2:($1 == 1 ? $3 : 1/0) title "First block", \ 
"data" u 2:($1 == 2 ? $3 : 1/0) title "Second block" 

條件的構造是這樣的:

$1 == 1 ? - >這是真的,列1等於一個?

$3 : 1/0 - >如果是,則積3列,否則情節1/0,這在gnuplot的意思是「忽略」數據點

+0

非常感謝您對這個詳細的解答。 – PVitt

相關問題