Продолжение: Как сделать сюжет солнечных лучей в R? - PullRequest
3 голосов
/ 20 марта 2019

Я новичок в R, и я бы задал вопрос прямо в комментариях, но у меня пока нет репутации: D

По сути, я хотел сделать диаграмму солнечных лучей, подобную предложенной в dmpэтот поток: Как создать график солнечных лучей в R или Python?

Однако мой фрейм данных выглядит примерно так:

df <- data.frame(
    'level1'=c('a', 'a', 'a', 'b', 'b', 'b', 'c', 'c'), 
    'level2'=c('AA', 'BB', 'CC', 'AA', 'BB', 'CC', 'AA', 'BB'), 
    'value'=c(12.5, 12.5, 75, 50, 25, 25, 36, 64))

Так что, когда я строю солнечный лучПостройте график следующим образом:

ggplot(df, aes(y=value)) +
    geom_bar(aes(fill=level1, x=0), width=.5, stat='identity') + 
    geom_bar(aes(fill=level2, x=.25), width=.25, stat='identity') + 
    coord_polar(theta='y')

ggplot группирует level2 вместе (поэтому складывает все AA, затем все BB и все CC) вместо того, чтобы оставлять каждого внутри своего level1.Как мне предотвратить это?

Большое спасибо заранее,

Нат

1 Ответ

1 голос
/ 21 марта 2019

Вы можете попробовать добавить столбец идентификатора строки в свой фрейм данных и использовать его явно как переменную группировки. Это не позволяет ggplot() сгруппировать бруски по эстетике fill:

library(dplyr)

ggplot(df %>% mutate(id = seq(1, n())), 
       aes(y = value, group = id)) +
  geom_col(aes(fill = level1, x = 0), width = .5) + 
  geom_col(aes(fill = level2, x = .25), width = .25) +
  coord_polar(theta = 'y')

plot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...