1
我正試圖在數據文件中繪製一些測量值。下面是數據的一個簡單的例子:來自數據文件的幾個圖
1 7 100
1 15 200
1 31 300
2 7 150
2 15 300
2 31 400
正如你看到的,有三列。第二列應該是x軸,第三列包含該值。但是,我應該如何讓gnuplot爲第一列中的每個不同值創造一個新的陰謀?上述 的例子應該產生兩個地塊,一個叫1和一個叫2.
我正試圖在數據文件中繪製一些測量值。下面是數據的一個簡單的例子:來自數據文件的幾個圖
1 7 100
1 15 200
1 31 300
2 7 150
2 15 300
2 31 400
正如你看到的,有三列。第二列應該是x軸,第三列包含該值。但是,我應該如何讓gnuplot爲第一列中的每個不同值創造一個新的陰謀?上述 的例子應該產生兩個地塊,一個叫1和一個叫2.
至少有兩種不同的方式去了解這一點:
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的意思是「忽略」數據點
非常感謝您對這個詳細的解答。 – PVitt