Я работаю с категориальными продольными данными. Мой данные имеет 3 простых переменные, такие как:R - ggplot2 параллельный категориальный график
id variable value
1 1 1 c
2 1 2 b
3 1 3 c
4 1 4 c
5 1 5 c
...
Где variable
в основном время и value
являются 3 возможными категориями один id
может принять.
Я заинтересован в создании «параллельного» продольный график, подобный этому с ggplot2
Я борюсь немного, чтобы получить это право. То, что я придумал сейчас это:
dt0 %>% ggplot(aes(variable, value, group = id, colour = id)) +
geom_line(colour="grey70") +
geom_point(aes(colour=value, size = nn), size=4) +
scale_colour_brewer(palette="Set1") + theme_minimal()
Проблема с этим графиком, что мы не можем увидеть «толщину» «перехода» (в id
линии).
Интересно, если вы могли бы помочь мне:
а) помочь сделать видимую id
линии, или сделать его «толщу», в соответствии с количеством id
собирается образуют одно состояние в другом
б) Я также хочу, чтобы re-size
точка в соответствии с номером id
в этом состоянии. Я попытался сделать это с geom_point(aes(colour=value, size = nn), size=4)
, но он, похоже, не работает.
Спасибо.
# data #
library(dplyr)
library(ggplot2)
set.seed(10)
# generate random sequences #
dt = as.data.frame(cbind(id = 1:1000, replicate(5, sample(c('a', 'b', 'c'), prob = c(0.1,0.2,0.7), 1000, replace = T))))
# transform to PP file #
dt = dt %>% melt(id.vars = c('id'))
# create a vector 1-0 if the activity was performed #
dt0 = dt %>% group_by(id) %>% mutate(variable = 1:n()) %>% arrange(id)
# create the number of people in that state #
dt0 = dt0 %>% count(id, variable, value)
dt0 = dt0 %>% group_by(variable, value, n) %>% mutate(nn = n())
# to produce the first graph #
library(vcrpart)
otsplot(dt0$variable, factor(dt0$value), dt0$id)
спасибо, очень круто – giacomo