我希望创建一个圆,然后将一条线段从原点覆盖到圆上的给定点(在此试运行中,我选择将线段结束于(.25,.25))。对于我正在进行的研究,我需要能够生成多个长度和端点的这些线段,所以我希望有一个适合它的代码。这是我到目前为止所拥有的。我最近才开始学习R,所以任何建议都会得到很好的赞赏。
circle<- function(center=c(0,0),r,npoints=1000){
tt<-seq(0,2*pi,length.out=npoints)
xx<-center[1]+r*cos(tt)
yy<-center[2]+r*sin(tt)
return(data.frame(x=xx,y=yy))
}
circle1<-circle(c(0,0),.48)
k<-ggplot(circle1,aes(x,y))+geom_line(aes(0,0,.25,.25))
k
答案 0 :(得分:1)
你问题的标题讽刺地接近答案......使用geom_segment
。
ggplot(circle1,aes(x,y)) + geom_path() +
geom_segment(x = 0, y=0, xend=0.25, yend=0.25)
由于您需要能够在多个长度和端点生成这些线段,然后您应该将这些点放在data.frame
而不是手动添加它们:
# dummy data
df <- data.frame(x.from = 0, y.from=0, x.to=0.25, y.to=c(0.25, 0))
# plot
ggplot(circle1,aes(x,y)) + geom_path() +
geom_segment(data=df, aes(x=x.from, y=y.from, xend=x.to, yend=y.to))
# depending on how you want to change this plot afterwards,
# it may make more sense to have the df as the main data instead of the circle
ggplot(df) +
geom_path(data=circle1, aes(x,y)) +
geom_segment(aes(x=x.from, y=y.from, xend=x.to, yend=y.to))