让我们以以下data.frame为例:
data <- data.frame(windowSize1=rep(c("1 week","2 weeks"),each=6),
windowSize2 = rep(c("0 weeks","1 week"),6),
Modell = rep(c("SVM","random Forest","NN"), 4),
MSE=c(rnorm(12))
)
ggplot()+
geom_point(data=data, aes(x=windowSize1, y=MSE, color=Modell, shape=windowSize2),size=2)
我想在此图中添加一条线,该线连接数据中第1行的MSE值和第7行的MSE值,颜色与重新关联的SVM-数据点相同。 但是当我尝试:
ggplot()+
geom_point(data=data, aes(x=windowSize1, y=MSE, color=Modell, shape=windowSize2),size=2)+
geom_line(data=data[c(1,7),],aes(x=windowSize1, y=MSE, color=Modell) )
我得到了错误方法:“ geom_path:每个组仅包含一个观察值。您是否需要调整组的美感?”
有人知道这个消息吗? (我不明白,因为data.frame的两行都来自“ SVM”组)
答案 0 :(得分:1)
我认为问题在于windowSize1
是一个因素,因此ggplot
不知道如何在值之间划界线。如果将windowSize1
更改为整数,则可以使用:
library(ggplot2)
data <- data.frame(windowSize1=rep(c(1,2),each=6),
windowSize2 = rep(c("0 weeks","1 week"),6),
Modell = rep(c("SVM","random Forest","NN"), 4),
MSE=c(rnorm(12))
)
ggplot()+
geom_point(data=data, aes(x=windowSize1, y=MSE, color=Modell, shape=windowSize2),size=2)+
geom_line(data=data[c(1,7),],aes(x=windowSize1, y=MSE, color=Modell) )
编辑:
但是实际上有一个更好的解决方案,可以保留所有因素。诀窍是让ggplot了解应该在哪一点之间画线。您可以使用group
参数来做到这一点。在这种情况下,Modells
建立了组,所以:
data <- data.frame(windowSize1=rep(c("0 weeks","1 week"),each=6),
windowSize2 = rep(c("0 weeks","1 week"),6),
Modell = rep(c("SVM","random Forest","NN"), 4),
MSE=c(rnorm(12)))
ggplot()+
geom_point(data=data, aes(x=windowSize1, y=MSE, color=Modell, shape=windowSize2,size=2))+
geom_line(data=data[c(1,7),],aes(x=windowSize1, y=MSE, color=Modell, group=Modell,size=1) )