我正在使用分类纵向数据。我的数据有3个简单的变量,例如:
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
是id
可以采用的3个可能类别。
我有兴趣制作一个" parallel"纵向图,与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
行)。
我想知道你是否可以帮助我:
a)帮助使id
行可见,或使其变得更厚"根据从一个州到另一个州的id
的数量
b)我还希望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)
来做,但它似乎没有效果。
感谢。
writeRecord :: Handle -> Record -> IO ()
writeRecord h r = hPutStrLn h (toByteString r)
答案 0 :(得分:2)
你与geom_point(aes(colour=value, size = nn), size=4)
如此接近,问题是你在size
aes()
中定义ggplot
之后重新定义nn
用常数4覆盖变量引用。假设你想使用dt0 %>% ggplot(aes(variable, value, group = id, colour = id)) +
geom_line(colour="grey70", aes(size = nn)) +
geom_point(aes(colour=value, size = nn)) +
scale_colour_brewer(palette="Set1") + theme_minimal()
来扩展行思维,你可以调整你的代码:
dt0
如果您想为线条粗细使用滞后值,我建议将其添加为this.router.navigate(./somepath, { relativeTo: this.route })
中的新列。