2014-04-27 111 views
5

我有一組關於不同x值的點: x = 0.5時爲5分,x = 0.6時爲5分,x = 1.4時爲5分,x = 1.6時爲5分。GNUPlot:如何爲每個x值創建一個boxplot?

現在我想爲這些x值中的每一個創建箱線圖。但不知何故,我所有的箱子都在x = 0.5。我想要在正確的x值下創建箱型圖。 2個x值之間的距離可以不同。我當前的x值分別爲0.5,0.6,0.7,0.8,0.9,1.0,1.2,1.4和1.6,但對於不同的情節他們也可能不同。我會怎麼做?

這是我的點GNUPLOT腳本:https://dl.dropboxusercontent.com/u/26464165/Points.gnu

這是我的箱線圖的GNUPLOT腳本:https://dl.dropboxusercontent.com/u/26464165/Boxplots.gnu

感謝您的時間!

+0

不,我想箱圖。我想顯示每個x值的y值有多大。這是關於不同測試運行的結果。 – John

回答

8

您必須重新排列箱形圖的數據。統計信息是在完整的列上計算的。所以,你必須重新安排你的數據,如:

set style fill solid 0.25 border -1 
set style boxplot outliers pointtype 7 
set style data boxplot 

set title 'My Plot' font 'Arial,14'; 
set xtics ('1.0' 1, '1.2' 2, '1.4' 3) 
plot for [i=1:3] 'data.txt' using (i):i notitle 

與4.6.4結果是:

enter image description here

而是寫作的

# 1.0 1.2 1.4 ... 
2.2 2.2 3.06 
2.0 2.46 2.93 
2.2 2.46 3.06 
2.0 2.4 2.8 
1.73 2.33 2.8 

然後,你可以用它繪製您可以手動提取xtics(使用Unix命令行工具),如圖所示,例如在https://stackoverflow.com/a/10799204/2604213

header = "`head -1 data.txt | cut -b 2-`" 
set for [i=1:words(header)] xtics (word(header, i) i) 
+0

感謝您的幫助。我最大的問題是我的數據安排的方式。我重新排列了我的數據,現在我正在繪製它:'plot' - '使用(0.5):1,' - '使用(0.6):1,' - '使用(0.7):1,' - ' (0.8):1,' - '使用(0.9):1,' - '使用(1.0):1,' - '使用(1.2):1,' - '使用(1.4):1,' - '使用使用(1.6):1;' – John

+0

噢,是的,如果你想保持數值軸上的位置,這就是要走的路。 – Christoph

1

克里斯托弗的回答是好的,如果你知道水平(列)的數量和它們的名字(xtics)的時間提前。否則,http://soc.if.usp.br/manual/gnuplot-doc/htmldocs/boxplot.html給出了using聲明(using x:data:width:level)的第四個字段的解決方案。

你把所有的數據在一列,與隨行的因素列給出了每個基準水平:

2.2 1.0 
2.2 1.2 
3.06 1.4 
2.0 1.0 
... 

數據出現的順序並不重要,只要水平是正確的。該級別轉換爲一個字符串,它覆蓋了xtics。

修改克里斯托夫的劇本,

set style fill solid 0.25 border -1 
set style boxplot outliers pointtype 7 
set style data boxplot 

plot "data.txt" using (1):1:(0.5):2 

會生成以下:

Boxplot generated with GNUPlot using a factor column

相關問題