在R中绘制半圆

时间:2015-07-21 12:03:54

标签: r plot geometry

我正在尝试使用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')

有谁知道我为什么遇到这个麻烦,或者知道更好的方法来做我想做的事情? 谢谢!

3 个答案:

答案 0 :(得分:6)

问题是默认宽高比不是1:1。

要解决此问题,请在asp=1中设置plot

fixed circle

灵感来自this Q&amp; A.你可以通过打开轴和x / y标签来嗅出这种情况。

答案 1 :(得分:3)

如果使用网格包也是一个机会,那么有一个更简单的解决方案:

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)

这会创建一个带剪裁的视口,即填充圆圈的适当位置会创建一个半圆。

答案 2 :(得分:0)

如果要将半圆添加到现有绘图中(因此无法直接控制纵横比),则针对此特定情况的一个选项是使用plotrix包中的floating.pie函数。

一个更通用的工具,用于创建自定义符号并将它们添加到绘图中(符号与整体绘图的纵横比不同)是使用TeachingDemos包中的my.symbols函数。