2016-09-26 39 views
1

它的一些時間序列股票數據我正在繪圖。即x軸是日期而y是股票價格。Gnuplot - 用x軸繪製一個圓作爲日期

我的數據文件「Cir2.txt」看起來是這樣的:

2/25/2016,18600,10/23/2008,11000 

我想在(2/25/2016,18600),並與長度的半徑將有密謀與中心的圓點(10/23/2008,11000)在圈子本身。

我畫出這樣的:

plot 'Cir2.txt' u 1:2:timecolumn((sqrt((timecolumn($1,"%m/%d/%Y")-timecolumn($3,"%m/%d/%Y"))**2 + ($2-$4)**2))/2) with circles 

然而,繪製半徑似乎更短,並沒有通過預期的點(10/23/2008,11000)。看起來半徑參數需要一個非常大的數字來顯示有意義的東西。似乎與x軸是一個日期有關。

+0

抱歉,我的意思是這樣的:情節 'Cir2.txt' U 1:2:(SQRT((timecolumn($ 1,「%米/%d /%Y「) - 時間欄($ 3,」%m /%d /%Y「))** 2 +($ 2- $ 4)** 2))/ 2) – ALEUNG

+0

下面的完整腳本:set title」Hang Seng Gann「font」,20「 set key off set size ratio -1 1,1 set xdata time set timefmt」%m /%d /%Y「 set xrange [」01/01/1990「: 「05/29/2017」] noreverse 設置格式x「%m /%d /%Y」 設置鼠標mouseformat 3; 組yrange [0.00000:32000.0000] noreverse nowriteback 組xlabel '日期' 組ylabel '價格' 組網格 組數據文件分離器 「」 情節 'HS2.txt' 使用1:2:4:3:5與燭臺,\ 'Cir2.txt'u 1:2 :((sqrt((時間列($ 1,「%m /%d /%Y」) - 時間列($ 3,「%m /%d /%Y」)) )** 2 +($ 2- $ 4)** 2))/ 2)帶圓圈 – ALEUNG

回答

1

這是一個位的事實複雜化(如文檔狀態),該半徑在x軸的單元:

circles風格繪製在每個數據點具有顯式半徑的圓。 如果存在三列數據,則它們被解釋爲x,y,半徑。 半徑始終以圖的水平軸 (x或x2)爲單位進行解釋。 y上的比例和圖的縱橫比都被忽略。

作爲一種變通方法,可首先使用p 1/0初始化內部的Gnuplot變量(見下文)產生一個空的情節,變換座標成無量綱的,計算半徑那裏,最後表達單位該半徑的X軸。

customFormat="%m/%d/%Y" 

set datafile separator "," 
set xdata time 
set format x "%m/%Y" 
set timefmt customFormat 

set xrange ["01/01/1990":"05/29/2017"] 
set yrange [0:32000] 
set xtics ("10/23/2008" "10/23/2008" 0, "2/25/2016" "2/25/2016" 0) 

set xlabel 'Date' 
set ylabel 'Price' 
set grid 

unset key 

p 1/0 

ex = (GPVAL_X_MAX - GPVAL_X_MIN)/(GPVAL_TERM_XMAX - GPVAL_TERM_XMIN) 
ey = (GPVAL_Y_MAX - GPVAL_Y_MIN)/(GPVAL_TERM_YMAX - GPVAL_TERM_YMIN) 

fn(x0, x1, y0, y1) = sqrt(((x1-x0)/ex)**2 + ((y1-y0)/ey)**2)*ex 

p \ 
    'Cir2.txt' u 1:2 w p lc rgb 'red', \ 
    '' u 3:4 w p lc rgb 'blue', \ 
    '' u 1:2:(fn(timecolumn(1, customFormat), timecolumn(3, customFormat), $2, $4)) w circles lc rgb 'black' 

這然後產生:

enter image description here

+0

非常感謝您的幫助ewcz!它完美的作品!萬分感激。 – ALEUNG

+0

@ALEUNG我的榮幸...... :) – ewcz