2015-07-21 72 views
7

我想用R畫出半個圓圈。我最終的目標是繪製一個圓圈,中間用顏色分開。我找到的唯一方法是畫兩個不同顏色的半圓。
所以我創建了自己的功能:在R中畫半圈

upper.half.circle <- function(x,y,r,nsteps=100,...){ 
    rs <- seq(0,pi,len=nsteps) 
    xc <- x+r*cos(rs) 
    yc <- y+r*sin(rs) 
    polygon(xc,yc,...) 
} 

lower.half.circle <- function(x,y,r,nsteps=100,...){ 
    rs <- seq(0,pi,len=nsteps) 
    xc <- x-r*cos(rs) 
    yc <- y-r*sin(rs) 
    polygon(xc,yc,...) 
} 

但是,由於某種原因,我半圈結束更像是半橢圓形。例如,嘗試運行:

plot(1, type="n",axes=F,xlab="", ylab="",xlim=c(0,200),ylim=c(0,200)) 
upper.half.circle(15,170,10,nsteps=1000,col='red') 

有誰知道爲什麼我有這樣的煩惱,或者知道一個更好的辦法做我想要什麼?
謝謝!

+0

我們試圖製作什麼類型的地塊? – zx8754

回答

5

問題是默認長寬比不是1:1。

要解決這個問題,在plot設置asp=1

fixed circle

通過this Q &答:你可能已經嗅到了靈感,這是通過打開軸和X/Y標籤的情況。

+0

謝謝!解決了這個問題。 – soungalo

2

如果使用網格包也將是你的一個機會,有一個更簡單的解決方案:

library(grid) 
vp <- viewport(width=0.5, height=0.5, clip = "on") 
grid.circle(0.5,0,r=0.5, gp = gpar(fill = 'red'), vp = vp) 

這將創建剪裁,即視口,實心圓的適當位置創建一個半圈。

0

如果你想你的半圓添加到現有的情節(因此不能直接控制的縱橫比),那麼對於這個特定的情況下,一個選項是使用floating.pie函數從plotrix包。

用於創建自定義符號並將它們添加到繪圖(使用具有與整體繪圖不同長寬比的符號)的更常用工具是使用TeachingDemos軟件包中的my.symbols函數。