2012-11-17 59 views
4

我想繪製一些圓形數據的玫瑰圖。我一直在使用circular包裝,並且在此包裝內,它允許您使用以下功能繪製簡單的玫瑰圖:rose.diag。雖然這繪製了圖表,但我希望能夠改善圖表,但無法找到添加到圖表或略微調整的圖表。我已經看過在ggplot2中繪製它,但是這對我來說並不明顯,我正努力在R中找到另一個繪製玫瑰圖的軟件包。如果任何人都可以提供幫助,那麼我會很高興聽到你的回覆。R的玫瑰圖

我發佈的數據樣本,並在下面我當前的代碼和我一起查詢:

Angle 
0.65454759 
0.01355458 
0.5052027 
0.2264302 
-0.350552 
-0.428481 
0.1231778 
0.258787 
0.06723504 
0.06906181 
2.54608572 
-1.6591672 
3.00437314 
-0.0503291 
-0.828578 
-1.9616418 
-0.6468774 
0.01438686 
0.1162713 
0.9938797 
0.1861583 
0.1547071 
0.2577813 
0.5110576 
0.08714113 

這些數據是弧度轉角。使用circular包我做這個數據circular類的載體:

rose.diag(x, pch = 16, cex = 1, axes = TRUE, shrink = 1, col=3, prop = 2, 
    bins=36, upper=TRUE, ticks=TRUE, units="degrees") 

有:

x <- circular(Angle) 

然後使用下面的代碼,它繪製度,而不是弧度圖繪製玫瑰圖我想添加到這個情節的3件事:

  1. 更改劇情的方向,使0是在頂部,而不是在右側。
  2. 向圖中添加同心圓以幫助直觀地解釋每個「分檔」的大小和重量。
  3. 添加一行來識別平均角度(與SD誤差條如果可能的話)

回答

3

有幾個方法可以做到這一點。在這個包中有rose.diag的「零」參數。

y <- scan() # paste in the values from the question and hit return twice 
y <- circlar(y) # not necessary but prevents a warning 
rose.diag(y, units = 'degrees', zero = pi/2) # units doesn't change the underlying units 

或者,您可以設置您創建的circular對象的屬性。

y <- circlar(y, zero = pi/2) 
rose.diag(y, units = 'degrees') # note, no 0 call here 

所以,現在該地塊旋轉...如何添加的東西...

> par('usr') 
[1] -1.376553 1.376553 -1.123200 1.123200 

這給了我的用戶座標,並告訴我情節尺寸在用戶空間。現在我可以做一些事情,比如添加一個圓圈。

symbols(0, 0, circle = 0.2, inches = FALSE, add = TRUE, fg = 'red') 

有一個lines.circular函數,但它不是很明顯如何使用它。我還可以使用segmentsarrows命令繪製一條線,並與它們一起繪製在繪圖上。它需要一些歐幾里德幾何來將線的角度和長度轉換爲點。這應該讓你開始。

m <- mean.circle(y) 
segments(0, 0, cos(m+pi/2), sin(m+pi/2), col = 'red') # note I need to add the new 0 position... there is a lines.circular function but it wasn't obvious to me how to use it. 

(尖...在rose.diag取景圈是在1,從而使該到circle論點symbols將在該點正好畫一個半徑)

+0

那太好了,謝謝你。我沒有意識到有一個「零」的論點。還有兩個問題:是否可以繪製x和y軸(連接0到180和90到270)?你也有任何想法,我怎麼可以將圓形誤差線添加到平均線? – James

+0

段命令可以繪製任何直線。你需要爲你的曲線想法找出一個方程。您根據角度決定起點和終點,然後根據角度和半徑計算一系列歐幾里得點。所以,如果角度從2-3開始,那麼只需在該角度範圍內計算20個點。使用分段來繪製所有的小線條。 – John

+0

好的,太好了。感謝您的幫助。 – James