R 极坐标系中的ggplot geom_线连接异常

R 极坐标系中的ggplot geom_线连接异常,r,ggplot2,polar-coordinates,R,Ggplot2,Polar Coordinates,我想绘制从0到20π的r=theta,这应该是一个有十个循环的螺旋 这很好用: data.frame(x=seq(0,20*pi, length.out=1000)) %>% mutate(theta=x %% (2*pi), r=x) %>% ggplot() + aes(x=theta, y=r) + coord_polar(start=-pi/2, direction=-1) + ggtitle("r=theta") + geom_line() + ylim(0,20*pi

我想绘制从0到20π的
r=theta
,这应该是一个有十个循环的螺旋

这很好用:

data.frame(x=seq(0,20*pi, length.out=1000)) %>% mutate(theta=x %% (2*pi), r=x) %>% 
ggplot() + aes(x=theta, y=r) + coord_polar(start=-pi/2, direction=-1) + 
ggtitle("r=theta") + geom_line() + ylim(0,20*pi) + xlim(0, 2*pi)

但当我将
geom_点
更改为
geom_线
时,它会奇怪地连接这些点:


如何修复此问题?

要做的关键事情是设置
美学,以停止使用
geom\u路径
将线加倍。在这里,我的设置略有不同,以避免θ=0时出现间隙

data.frame(theta = rep(seq(0, 2 * pi, length = 100), 10)) %>% 
  mutate(r = seq(0, 20 * pi, length = 1000), z = rep(1:10, each = 100)) %>%   
  ggplot() + aes(x=theta, y=r, group = z) + 
  coord_polar(start = -pi/2, direction = -1) + 
  ggtitle("r = theta") + 
  geom_path() + 
  ylim(0, 20 * pi) + xlim(0, 2 * pi)

添加
%>%#arrange(r)%>%
+geom_path()
可以让您部分到达那里,但是
geom_path
不会越过
0
行。莫名其妙…所以诀窍是按mod 2 pi分组,并将落在边缘的点复制到每组中。这很烦人,但很管用。