2013-01-19 70 views
3

我有一個數據文件有多列,前兩個指示位置,其他指示其他屬性(如從這一點發送的項目數)。例如:在gnuplot中使用多個變量繪圖

1 1 1 57.11 
2 1 2 62.40 
3 4 1 31.92 

我想要做的就是情節在位置的點,而是從其他列使用價值改變點的類型和大小(例如)。然而,我似乎無法找到一種方法來引用圖中的列。我知道使用「變量」,但我找不到使用多個變量的方法。

我要的是類似如下:

plot "mydata" using 1:2 notitle with points pt ($3) ps ($4/10) 

使PT和PS使用分別從第三和第四列取每個點的值。

這甚至可能在gnuplot?是否有某種解決方法?

回答

4

您應該能夠使用關鍵字variable做這樣的事情:

plot 'datafile' using 1:2:3:4 w points ps variable lc variable 

或可能映射值的調色板:

plot 'datafile' using 1:2:3:4 w points ps variable lc palette 

關鍵字變量和/或調色板原因gnuplot從文件讀取屬性,並且它們都需要通過using讀取額外的列。當然,所有使用平常的東西應用 - 您可以應用轉換到數據等:

plot 'datafile' using 1:2:3:($4+32.) w points ps variable lc palette 

我不記得了我的頭頂部的第三列是否會成爲的pointsize或這裏的顏色,我現在沒有時間玩弄它來搞清楚。您可以進行試驗並發表評論,或者當我有時間並添加更新時,我會回到此處。


一些其它性質(例如pointtype)不能被很容易地使用variable改變。最簡單的方法是使用gnuplot三元運算符來使用過濾器。

首先,編寫返回基於數據從數據文件的1列pointtype一個功能:我用一個簡單的身份功能

my_point_type(x) = x 

在這裏,但它可以是任何東西。現在,您可以循環在pointtypes你想(在這裏1-10)製作的情節每個:

plot [for PT=1:10] 'datafile' u 1:((my_point_type($3) == PT) ? $2:NaN) with points pt PT 

這是假設與pointtype信息的列是3列和第二列包含位置信息。這也可以結合我上面演示的東西。

+0

我試過多次使用「變量」,但它似乎只有一些參數接受它。例如,ps對變量感到滿意,但是pt不是,並且將其與其他參數一起使用給出了相同的錯誤:'undefined variable:variable' 沿着這條線,我也嘗試在某個示例中找到名稱爲varaibles的地方:(我昨天晚上找到了這個例子,但是我今天早上再也找不到了) 'plot「datafile」using 1:2:(myvar1 = $ 3):(myvar2 = $ 4)notitle with points pt myvar1 ps myvar2' which just just give the相同的未定義變量錯誤。 – OverlordAlex

+0

@OverlordAlex - 啊,對不起,我看到'pt',我只是假設你正在嘗試改變顏色。不,沒有辦法改變這種點型。唯一的解決方案是將數據過濾爲不同的點類型。當我得到時間時我會更新... – mgilson

+0

@OverlordAlex - 我已更新。也許你的意思是...... ...使用1:2:(myvar = $ 3,$ 3):(myvar = $ 4,$ 4)...'我不確定這是否會工作。 – mgilson