GNUPLOT 畫多組柱狀圖 以及 折線圖 以及各種問題的解決方案


  在Windows下使用客戶端,直接可以打開.plt文件的gnuplot格式的文件,open->xx.plt

  在Linux下使用shell 運行gnuplot腳本, 結果一閃而過.解決辦法是在 程序末尾+一句:

pause -1  #讓程序永久暫停

  

  操蛋的GNUPLOT命令簡寫,本來命令就很多,現在都用簡寫,誰tm知道是什么意思,而且還不好查。文檔里面也是一大坨。簡寫是方便了,但是 讓新手玩家欲哭無淚。所以本屌覺得這是個傻逼的

縮寫方案。

  轉自:http://qbk378.lofter.com/

談談gnuplot(七):點線風格

我們接着上次的數據圖談起。上次我們得到了這樣一個“點線”圖:


這里的數據點是由小“十”字表示的,但是似乎太小了,有點看不清楚。另外,如果我們想在做報告時把這個圖用到幻燈片中去,小“十”字很不醒目,這時候我們可能想用其他的標志。gnuplot里面有幾個控制點和線畫法風格的參數:

  • linestyle   連線風格(包括linetypelinewidth等)
  • linetype     連線種類
  • linewidth   連線粗細
  • linecolor   連線顏色
  • pointtype   點的種類
  • pointsize   點的大小

我們看下面的例子:
gnuplot> plot "datafile.dat" with linespoints linecolor 3 linewidth 2 pointtype 7 pointsize 2


這幾個參數的用法不難理解,直接跟在 with 命令之后就可以了,但是2、3、7這些數字都代表什么意思呢?這些數字是代表不同畫法風格的代碼,具體某個數字代表什么意思,這個依賴於我們使用的 terminal(還記得我們在第二講里曾經講過的 terminal 嗎?)拿我們現在正在使用的 wxt terminal 舉例,如果想知道這些數字究竟代表什么意思,可以輸入命令:
gnuplot> test
這樣當前 terminal 會輸出一個測試圖:

 


測試圖中包含當前 terminal 的風格代碼實例。例如,左下角顯示的是連線粗細,右邊顯示的是色彩和數據點顯示風格對應代碼。

最后,告訴大家一個好消息:gnuplot里面很多命令有縮寫形式。例如上面例子中的繪圖命令可以簡寫為:
gnuplot> plot "datafile.dat" w lp lc 3 lw 2 pt 7 ps 2
至於其他參數命令的縮寫形式,相信不難猜出來,大家可以試驗一下猜猜看。

  

++==================================end

 

  好了,知道了這些我們細說一下線段類型 - linetype

  終端的不同其實gnplot支持的線段類型(dash line) 也是不一樣的。我們可以通過輸出來顯示本終端支持的類型使用如下命令:

  

set terminal pngcairo dashed
set output 'test.png'
test
set output

  我的電腦上得到如下結果:

  

  所示 幾乎大多linetype 我都不支持啊 全是 直線 操蛋。 還好可以用 dashtype dt 1---5夠用了。

  最終  畫多條折線圖代碼如下:

  

set xlabel "樣本規模大小"
set ylabel "性能"
set title "我國主要海域監測情況"
set xrange [0.5:4.5]
set yrange [0:5]
plot "jiangshui.dat" using 1:2 w lp dt 1 title "本文算法", "jiangshui.dat" using 1:3 w lp dt 2 title "退火算法", "jiangshui.dat" using 1:4 w lp dt 3 pt 9 title "分支限界", "jiangshui.dat" using 1:5 w lp dt 4 pt 10 title "前序選擇/后序選擇"

  數據如下:

1 2.4 1.1 1.1 0.7
2 2.7 1.9 1.5 1.2
3 3.0 2.5 1.3 1.3
4 3.4 2.5 1.8 1.5

  順便解釋一下 操蛋的GNUPLOT縮寫:  plot "x.dat" using 1:2(x=1列,y=2列) with linepoint dashtype 1 title "fuckGNUPLOT" 

 

最后本人柱狀圖的代碼:

  

set yrange [0:100]
set ylabel "Early terminate ratio (%)"
set xlabel "Length of S"
set output "fuck.png"
unset tics
set ytics 0,20,100
set xtics ('40' 0, '80' 1, '120' 2, '160' 3, '200' 4)
#set xtics ('10' 0, '20' 1, '30' 2, '40' 3, '50' 4)

#set xtics center offset 0,-1
set style histogram clustered gap 1   #//gap 2表示裂隙寬等於矩形寬度的2倍
set style fill pattern border -1 #//fill solid表示完全填充柱體,后面跟0-1的參數,1表示完全填充,border 表示柱體的邊線顏色,-1表示黑色。這里還可以加參數pattern
plot 'ETR.data' using 1 with histogram ls 2 title 'n = 40', 'ETR.data' using 2 with histogram ls 3 title 'n = 120', 'ETR.data' using 3 with histogram ls 3 title 'n = 200'#//using 1 表示d2.data數據中的第一列,using 1:3表示第一列和第三列
pause -1    #使運行結果永久停留

 

柱狀圖:

 數據:

57.6 25.1 14.6
44.1 18.8 10.6
41.5 11.8 7.3
32.9 12.3 6.5
28.0 9.4 5.9

 柱狀圖 一種加數據標簽的版本:

set yrange [0:100]
set ylabel "清洗后臟數據率(%)"
set xlabel "不同的數據集"

unset tics
#set ytics 0,0.01,0.3
set xtics ('CMOR' 0, 'NOD' 1, 'CFOFR' 2)
#set xtics ('10' 0, '20' 1, '30' 2, '40' 3, '50' 4)
set yrange [0: 0.3]   # 圖上顯示的y的范圍 

set label '0.14' at -0.3, 0.145
set label '0.17' at 0.05, 0.175  

set label '0.09' at 0.74, 0.095
set label '0.07' at 1.05, 0.075  


set label '0.21' at 1.75, 0.215
set label '0.25' at 2.05, 0.255  

#set xtics center offset 0,-1
set style histogram clustered gap 1   #//gap 2表示裂隙寬等於矩形寬度的2倍
set style fill pattern border -1 #//fill solid表示完全填充柱體,后面跟0-1的參數,1表示完全填充,border 表示柱體的邊線顏色,-1表示黑色。這里還可以加參數pattern
plot 'ETR2.data' using 1 with histogram ls 2 title '本文方法', 'ETR2.data' using 2 with histogram ls 3 title 'Trillum'#//using 1 表示d2.data數據中的第一列,using 1:3表示第一列和第三列
pause -1

   最后,增加了設置 title字體大小 + 折現粗細 的功能:

set xlabel "樣本規模大小(%)" font "Time-Roman,14"
set ylabel "准確率(%)" font "Time-Roman,14"
set title "{/Times=15 紐林海洋科學測量數據}"
set xrange [0.5:4.5]
set yrange [0:1]
#set yrange[0: 5]

plot "jiangshui.dat" using 1:2 w lp lw 4 dt 1 title "{/Times=13 本文方法}",\
"jiangshui.dat" using 1:3 w lp lw 4 dt 2 title "{/Times=13 基於模型}", \
"jiangshui.dat" using 1:4 w lp lw 4 dt 3 pt 9 title "{/Times=13 基於密度}",\
"jiangshui.dat" using 1:5 w lp lw 4 dt 4 pt 10 title "{/Times=13 基於近鄰}"

 

畫折現圖 使用了平滑 效果 使得曲線不太刺激

#set term pngcairo size 800,500
#指定輸出成png圖片,且圖片大小為550×250,需要ligpng支持,采用默認顏色設定
set size 0.9,0.9 #指定繪圖區域占整個size的比率


# X軸
set xdata time    #X軸數據格式為時間
set timefmt "%s"    #時間輸入格式
set format x "%m-%d" #x軸時間輸出格式

set xtics rotate by -45
set xrange [1498838401:1501430400]
set xtics 172800
set mxtics 2
#set xtics 86400
#set xrange [1:31]
#set xtics 1
set xlabel "時間(日)" offset 42, 3.0, -1


# Y軸
set ylabel "爬取量" rotate by 0 offset 7, 10.3, 0
set ytics ("30w" 300000, "40w" 400000, "50w" 500000, "60w" 600000)
set yrange [200000:600000]

set style data lines    #數據顯示方式為連線

set border 3
set xtics nomirror
unset x2tics
set ytics nomirror
unset y2tics
#set key top left #圖例位置
set key center at 1501084800,610000
plot "out8.dat" using 1:2 title "爬取數量" lw 1.4 smooth csplines

 

out8.dat

1498838400 313503.977081
1498924800 331905.649889
1499011200 318521.10331
1499097600 306579.251481
1499184000 322642.449389
1499270400 350129.10749
1499356800 385948.929864
1499443200 397201.146123
1499529600 400882.104801
1499616000 413986.940177
1499702400 423980.482202
1499788800 404414.18391
1499875200 408970.506749
1499961600 419330.25561
1500048000 460012.640927
1500134400 465842.659336
1500220800 444558.32591
1500307200 458160.668344
1500393600 451905.770105
1500480000 494825.760743
1500566400 500077.040152
1500652800 552155.842179
1500739200 513525.524576
1500825600 498641.700172
1500912000 526550.227633
1500998400 519123.133965
1501084800 571294.810875
1501171200 580753.124728
1501257600 589489.283606
1501344000 576588.115768
1501430400 589092.341126

 再補充一例:

 

set yrange [0:300]
set ylabel "time cost(s)"
set xlabel "number of images"
set xrange[-0.5: 4.5]
set xtics ('100' 0, '200' 1, '300' 2, '400' 3, '500' 4)
set style histogram clustered gap 1
set style fill pattern border -1
plot 'sift_gpu.dat' using 1 with histogram ls 3 fill pattern 2 title 'SIFTGPU', 'sift_gpu.dat' using 2 with histogram ls 3 title 'SIFT'
# ls表示填充線顏色 fill pattern確定后之后的柱狀圖樣式會 ++ 具體樣式參考上面的圖例中的 fill pattern
4.2 38.1
8.1 80.2
11.5 120.2
16.6 147.5
20.0 200.0

 貼一個更好看的版本

與上面版本的區別是:

1、GNUPLT版本不一樣

2、柱形圖的寬度比例套用了模板

3、字體修改

-GNUPLT:全部工具包含例子全都放到網盤里了。 下面的鏈接備用。

-查看位圖eps的工具GSview5.0

-查看位圖eps的插件:Ghostscript

 代碼:

reset
unset multiplot
set size 0.4,0.36
set origin 0,0
clear
set terminal postscript eps enhanced "Arial, 12"
set output "F://gnudat/sift.eps"
set multiplot
set palette ps_allcF# defined (1 1)
#set style fill solid

set key top right width 1 height -0.2

set boxwidth 50 absolute

#set key Right
set key spacing 0.725
set key samplen 2.5

set size 0.4,0.36
set origin 0,0

set xtics nomirror
set ytics nomirror

set xlabel "Number of images" -0.4, +0.4 font "Arial, 12" 
set ylabel "Time(sec)" 0.8, +0.4 font "Arial, 12"

set xrange [10:990]
set yrange [0:240]

set ytics 0,40,240
set xtics ("100" 100, "200" 300, "300" 500, "400" 700,"500" 900)
#set style fill pattern 3 border -1

set key 400,220
plot 'F://gnudat/sift_gpu.dat' using ($1)*100+25:($2) title "{/Times=9.8 SIFTGPU}" with boxes fs solid 0.5 lt 1,\
'F://gnudat/sift_gpu.dat' using ($1)*100-25:($3) title "{/Times=9.8 SIFT}" with boxes fs pattern 2 lt 1
#
using ($1)*100+25:($2) ===> x:y
 
        
sift_gpu.dat:
1 4.2 38.1
3 8.1 80.2
5 11.5 120.2
7 16.6 147.5
9 22.5 210.0

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM