我有这个数据框和这个情节:
df <- data.frame(Groupe = rep(c("A","B"),4),
Period = gl(4,2,8,c("t0","t1","t2","t3","t4")),
rate = c(0.83,0.96,0.75,0.93,0.67,0.82,0.65,0.73))
ggplot(data = df, mapping = aes(y = rate, x = Period ,group = Groupe, colour=Groupe, shape=Groupe)) +
geom_line(size=1.2) +
geom_point(size=5)
我如何整理数据,以便t1
和t2
之间的点不与一条线相连?我希望t0
和t1
连接(根据群组为蓝色或红色),t2
和t3
以相同的方式连接,但{之间没有线路{1}}和t1
。我通过查看类似的问题尝试了几件事,但它总是弄乱我的分组颜色:/
答案 0 :(得分:9)
答案 1 :(得分:7)
在ggplot中处理此类问题的最佳方法通常是在数据框中创建一个附加列,指示要在数据中使用的分组。例如,我在这里为您的数据框添加了一个额外的列gp
:
df$gp <- c(1,2,1,2,3,4,3,4)
ggplot(data = df, aes(y = rate, x = Period, group = gp, colour=Groupe, shape=Groupe)) +
geom_line(size=1.2) +
geom_point(size=5)
我相信,结果是你在找什么:
如果您使Period
成为数字列而不是字符向量或因子,则可以更轻松地自动生成gp
之类的列,而不是手动指定它(可能使用ifelse
或cases
创建它) - 如果您想多次执行相同的操作或使用大型数据框,这将非常有用。