ggplot geom_line в полярных координатах странно подключается

Я хочу построить r = theta от 0 до 20\pi, что должно быть спиралью с десятью петлями.

Это работает нормально:

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_point на geom_line, точки странно соединяются:

введите здесь описание изображения

Как я могу это исправить?


person Neal Fultz    schedule 03.08.2016    source источник
comment
добавление %>% #arrange(r) %>% и + geom_path() дает вам часть пути, но geom_path не пересекает линию 0. Озадачивает...   -  person Chris    schedule 03.08.2016


Ответы (1)


Главное, что нужно сделать, это установить эстетику group, чтобы линии не удваивались с geom_path. Здесь я настроил все немного по-другому, чтобы избежать разрыва при тета = 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)
person Richard Telford    schedule 04.08.2016
comment
Таким образом, трюк состоит в том, чтобы сгруппировать по модулю 2 pi и продублировать точки, попадающие на ребро, в каждую группу. Раздражает, но это работает. - person Neal Fultz; 05.08.2016