下面显示的我的图将创建一个简单的点散布图。我正在尝试在点(3,45)-(4,40)之间添加一条线,然后在点(2,108)-(3,45)-(3,118)-(4,91)-( 4,104),另一个介于(3,45)-(4,40)之间。
我认为这与添加更多分组和geom_line有关。但是,我有点卡住了。
任何帮助都会很棒。
x<-c(2,3,4,3,4,4)
w<-c(108,114,104,45,91,40)
wts<-data.frame(x,w)
h <- ggplot(data=wts, aes(x,w))
h <- h + geom_point(colour="blue")
h <- h + labs(title="Breaches",x = "Quarter", y= "Number of Breaches")
h<-h + theme_minimal()
h<-h + xlim(1,5)
h<-h + ylim(0,120)
h
答案 0 :(得分:2)
一种实现方法是为随后对geom_path
的调用提供 new 数据。由于您正在谈论原始框架中的连接点,因此我认为没有必要创建新框架,而只需索引我们想要的列即可。这里的一件好事(使用ggplot2
)是美学(aes(x,w)
)没有改变(尽管与data=
一起更新不是问题)。
h +
geom_path(data=wts[c(4,6),], color="blue") +
geom_path(data=wts[c(1,4,2,5,3),], color="red")
我认为您错误输入了一个坐标,(3,118)
应该是(3,114)
吗?如果没有,那么只需生成一个新框架并包含它即可。
此外,由于您在这两行中都至少包含一个点,因此我认为使用分组不容易解决该问题。为此,我推断您将定义第三个变量,将某些点分配给特定组。您可以通过复制有问题的地方来解决该问题,如下所示。您还需要考虑点的顺序:
wts2 <- rbind(wts, wts[4,])
wts2$grp <- c(2,2,2,2,2,1,1)
wts2$ord <- c(1,4,2,5,3,6,7)
# original plot, just changing wts for wts2[wts2$ord,]
h <- ggplot(data=wts2[wts2$ord,], aes(x,w)) +
geom_point(colour="blue") +
labs(title="Breaches",x = "Quarter", y= "Number of Breaches") +
theme_minimal() +
xlim(1,5) + ylim(0,120)
# an alternative to my first answer
h + geom_path(aes(group = grp, color = factor(grp)))