2012-03-22 45 views
3

我想在gnuplot中將兩個數據系列繪製在一個圖中作爲框。目前的腳本如下所示:「gnuplot」旁邊有兩個「盒子」相鄰的地塊

set terminal postscript eps enhanced color 
set title "Distribution of the extrepreneur PnL. Loan $6." 
set output 'pnl_loan6.eps' 


#set xrange [0:] 
set xlabel "Discounted profit" 

set style fill solid 0.8 border -1 
plot 'pnl_loan6.txt' using 1:2 title 'PnL high risk (xi=1)' with boxes,\ 
    'pnl_loan6.txt' using 1:3 title 'PnL high risk (xi=1.5)' with boxes 

但是這兩個系列重疊。除了重疊之外,我希望有一個系列在現有盒子的左半邊畫一個盒子,另一個在右半邊,以便它們有效地交替。我該怎麼做?

編輯:

  1. 我嘗試了直方圖,但是這並沒有看起來非常好。 xtics不是我之後的東西,而且列之間有空格。
  2. 樣品的數據(第20列滿分100分):

數據:

-10.000000 20251.000000 31825.000000 
-4.892638 26743.000000 21310.000000 
0.214725 20362.000000 14590.000000 
5.322087 13023.000000 9645.000000 
10.429449 7730.000000 6347.000000 
15.536812 4636.000000 4331.000000 
20.644174 2714.000000 2964.000000 
25.751536 1647.000000 2121.000000 
30.858899 1044.000000 1586.000000 
35.966261 648.000000 1106.000000 
41.073624 396.000000 873.000000 
46.180986 257.000000 685.000000 
51.288348 166.000000 471.000000 
56.395711 101.000000 369.000000 
61.503073 83.000000 321.000000 
66.610435 52.000000 260.000000 
71.717798 40.000000 184.000000 
76.825160 30.000000 172.000000 
81.932522 21.000000 143.000000 
87.039885 11.000000 116.000000 
+0

你繪製什麼樣的數據? (是數據文件順序整數的第一個字段中的內容?如果我有一個小數據文件可以使用,我可能會給你一個更完整和經過測試的答案) – mgilson 2012-03-22 18:27:23

+0

@mgilson,請參閱編輯。 – Grzenio 2012-03-23 07:26:52

回答

9

我真的不知道你是什麼之後,但也許這一點hackerish方法將這樣的伎倆:

set style fill solid 0.8 border -1 
set boxwidth 0.5 relative 
plot 'pnl_loan6.txt' using ($1+1.27684075):2 title 'PnL high risk (xi=1)' with boxes,\ 
    'pnl_loan6.txt' using ($1-1.27684075):3 title 'PnL high risk (xi=1.5)' with boxes 

到腳本不同的是

  1. 設置boxwidth做0.5的相對
  2. 將座標圖在x軸上偏移一半距離(這僅適用於您的x軸縮放等距離的情況。

總之,這是導致情節:

enter image description here

PS: 你可能要考慮在y軸的對數標度與set logscale y這將導致該地塊:

enter image description here

+0

這正是我所追求的!常數「+ -1.27684075」來自哪裏?如果數據發生變化,他們可能會改變嗎? – Grzenio 2012-03-23 10:35:28

+0

常量來自您的數據。你的數據以delta x = 5.1間隔 - 所以每個盒子的寬度是該距離的一半(約2.55)。上面的腳本將第一個盒子向左移動一個盒子寬度(-1.27),第二個盒子向右移動一個盒子寬度(1.27)。所以,如果x數據的間距發生變化,這些常量將會改變數值。 – mgilson 2012-03-23 15:46:22

+0

可以使用'stats'命令(我喜歡它)自動提取這些信息:'stats'file.txt'using every every :::: 1 nooutput; ofs = 0.25 *(STATS_max-STATS_min);劇情......使用($ 1)...'。 – Christoph 2013-09-12 13:33:30

0

你可以嘗試histogram風格...也許set boxwidth

編輯

對於boxwidth看到Woltan的答案 - 看到你的數據文件後,這可能是最好的辦法。

你可以這樣做:

set style histogram cluster gap 0 
plot "datafile.dat" u 2:xtic(1) with histogram ... 

但是,你有一個多擁擠的x軸在這種情況下 - 但要標註與絃軸的情況下,這種方法的偉大工程。

最後一點: 這可能是一個好主意,這樣做以下 -

set style fill solid 0.8 border -1 
set boxwidth 0.5 relative 
plot 'datafile.dat' using ($1+1.27684075):2 title 'PnL high risk (xi=1)' with boxes,\ 
    '' using ($1-1.27684075):3 title 'PnL high risk (xi=1.5)' with boxes lc rgb "#0000ff" 

這改變的綠框爲藍色(#0000FF)的顏色,因爲人〜5%是紅色/綠色色盲。 (你可以使用「藍色」而不是「#0000ff」 - 但後者更一般)。

+0

嗨,我嘗試了直方圖風格,但它似乎做了一個不同的事情。你能給出一個這個設置boxwidth的例子嗎?我如何指定我想要一半的原件?另外我需要將一個移動到左邊,另一個移動到右邊? – Grzenio 2012-03-23 07:20:56