在线图ggplot顶部的散点图

时间:2014-07-02 19:10:32

标签: r ggplot2

示例数据:

set.seed(245)
cond <- rep( c("control","treatment"), each=10)
xval <- round(10+ rnorm(20), 1)
yval <- round(10+ rnorm(20), 1)
df <- data.frame(cond, xval, yval)
df$xval[cond=="treatment"] <- df$xval[cond=="treatment"] + 1.5

我想要&#34;治疗&#34;条件被绘制为一条线和&#34;控制&#34;将数据绘制为散点图。到目前为止,我找到了一个工作,我将它们指定为两条线,但选择将控制线标记为“空白”。在scale_linetype_manual中:

plot <-ggplot(data=df, aes(x=xval, y=yval, group=cond, colour=cond))+
geom_line(aes(linetype=cond))+
geom_point(aes(shape=cond))+
scale_linetype_manual(values=c('blank', 'solid'))

但是,必须有一种更直接的方法将控件绘制为散点图并将处理绘制为线图。最后,我想从治疗线上删除geom_point。它现在的方式,它将从控制中删除它,以及让我没有任何控制。

任何见解都会有所帮助。谢谢。

1 个答案:

答案 0 :(得分:2)

我希望我能正确理解你。您可以对subset使用“{1}}数据”geom_line,为subset使用“{1}}数据。

在子集化之后,geom_point(“治疗”)只有一个“cond”,geom_line只有一个“cond”(“控制”)。因此,我已经分别删除了“cond”与geom_pointaescolour之间的linetype 映射。您可能希望这些美学设置为所需的值。同样,此解决方案中不需要shape

group

enter image description here

来自OP的评论后,

更新,“现在,如果我的数据实际上有三个”条件“,其中2个条件将被绘制为线条,另外1个是散点图。”

ggplot(data = subset(df, cond == "treatment"), aes(x = xval, y = yval)) +
  geom_line() +
  geom_point(data = subset(df, cond == "control"))

enter image description here