2014-06-06 34 views
1

gnuplots我有以下 file1.dat如何結合使用圖表在Ubuntu

a  b    c  d(There is no colum name in my file) 
70.9 70.4  71.3 65.6 
70.8 70.9  72.8 68.1 
72.00 72.4  70.6 67.9 
70.2 71.5  71.7 70.9 
71.00 71.2  71.1 71.7 
71.5 71.3  71.1 71.4 

兩個數據文件中列出File2.DAT的

a   b  c  d(There is no colum name in my file) 
70.9 67.5 71.3 64.67 
72.2 71.2 72.8 65.5 
72.4 70.2 70.6 68.6 
71.6 72.1 71.3 67.9 
70.2 72.2 71.1 70.8 
71.2 71.7 71.9 71.7 
72.00 71.4 71.7 71.3 
70.8 71.7 71.4 71.3 

我想創建一個圖表A1,A2 B1, b2 c1,c2 d1,d2怎麼可能?

代碼:

set title "Unigram features ranked using MI of POSITIVE class" 
set title font ", 20" 
set xlabel "Feature Length" 
set xlabel font ",20" 
set ylabel "Accuracy(%)" 
set yrange [65:75] 
set ylabel font ",20" 
set ytics font ", 20" 
set boxwidth 0.98 

set key font ",18" 
set style fill pattern #solid 


set style histogram clustered #gap 5 title offset character 0, 0, 0 
set xtics font ", 20" 
set xtics ("100" 0, "300" 1, "500" 2, "1300" 3, "1500" 4, "1800" 5, "1900" 6, "2000" 7) 
set style data histograms 

plot "< paste without_threshold_POSITIVE.dat with_threshold_POSITIVE.dat" using 1:5 every ::1, \ 
"" using 2:6 every ::1, \ 
"" using 3:7 every ::1, \ 
"" using 4:8 every ::1 

set output 'POSITIVE_test.eps' 

set terminal postscript eps enhanced black 
replot 

請找code..and試圖指出我的錯誤

+0

你想使用那些對的XY散點圖? – merlin2011

+0

yws我想要的XY-Scatter – user3512562

+1

你必須合併這兩個文件到一個單一的,然後才能做到這一點,例如,使用'paste',另請參閱[從gnuplot中的2個文件中獲取比率](http://stackoverflow.com/a/20070138/2604213)。 – Christoph

回答

1

正如意見中提到的克里斯托弗,你需要預處理的數據,這paste是好工具:

paste file1.dat file2.dat > file3.dat 

會粘貼你的列。由於每個文件有4列,因此在新的file3.dat列中,第1至第4列來自file1.dat,第5至8列來自file2.dat。因此,你需要繪製using 1:5using 2:6using 3:7using 4:8

plot "file3.dat" using 1:5 every ::1, \ 
"" using 2:6 every ::1, \ 
"" using 3:7 every ::1, \ 
"" using 4:8 every ::1 

其中具有every ::1我告訴gnuplot的忽略,你有非plottable文本的第一行(你可以使用或者註釋掉這行#)。你可以做內部的gnuplot的paste預處理而不需要產生file3.dat

plot "< paste file1.dat file2.dat" using 1:5 every ::1, \ 
"" using 2:6 every ::1, \ 
"" using 3:7 every ::1, \ 
"" using 4:8 every ::1 
+0

error:plot「 user3512562

+0

正如你所說我已更新我的代碼luk在我的代碼 – user3512562

+0

@ user3512562我的答案適用於您最初發布的問題。你需要適應你的具體問題:如果你的數據文件沒有列標題,那麼刪除'every :: 1',如果它們每列少於四列(這似乎是錯誤消息的來源,重新獲得),那麼你需要改變'使用'選項。 – Miguel

0

histogram繪圖樣式只需要一列。我並不完全確定,你希望如何排列你的a1,a2,b1,b2等列,以及你的手動xtics如何發揮作用。

我假設第一個x值對應於第一行的標籤,依此類推。

下面是如何設置的A2列下的A1盒比較:

set title "Unigram features ranked using MI of POSITIVE class" 
set xlabel "Feature Length" 
set ylabel "Accuracy(%)" 
set yrange [65:75] 
set boxwidth 0.98 

set style fill solid 

set style histogram clustered #gap 5 title offset character 0, 0, 0 
set xtics ("100" 0, "300" 1, "500" 2, "1300" 3, "1500" 4, "1800" 5, "1900" 6, "2000" 7) 
set style data histograms 

plot "file1.dat" using 1 every ::1 t 'a1', \ 
    "file2.dat" using 1 every ::1 t 'a2' 

如若B1,B2列中的A1,A2列之間的排列,即按行分組,或每下方其他在不同的直方圖?

上述腳本的結果是(與4.6.4):

enter image description here