2015-07-21 126 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函数。