在ggplot中将geom_line均值添加到重新排序的geom_point图

时间:2018-06-27 22:21:34

标签: r ggplot2

试图生成一个点图,该点图对我的值进行重新排序,并且在这些值上方也有一条平均线。

我可以使用均线或重新排序的值来生成图,但不能同时生成这两者,因为会出现错误

  

“ geom_path:每个组仅包含一个观察值。您是否需要调整组的美感?”。

我相信我得到了错误,因为我的一些数据只有一个观察结果,但是我不明白为什么这只会成为重新排序数据的问题。

最后,我想要的是能够显示每个x值两个不同值组的均值。

这是我的示例代码

library(ggplot2) 
typ <- c("T", "N", "T", "T", "N")
samplenum <- c(7,7,6,8,8)
values <- c(1,2,1,3,2)
df = data.frame(typ, samplenum, values)
d <- ggplot(df, aes(x= reorder(samplenum, values), y= values))
d <- d +  geom_point(position=position_jitter(width=0.15, height=0.05)) 
d <- d + aes(colour = factor(df$typ))
d <- d + stat_summary(fun.y = mean, geom="line")
d

谢谢您的帮助。


这就是我要去的

enter image description here

在完成从更大的数据集中获得的结果的示例图片之前,需要执行以下步骤。

有行但未重新排序

enter image description here

重新排序,但无中线

enter image description here

1 个答案:

答案 0 :(得分:1)

如错误消息所示,您需要调整组的美观度。当您使用reorder时,将得到一个离散的比例尺,但是您想绘制跨组连接的线,这就是错误的原因。

您可以尝试

ggplot(df, aes(x = reorder(samplenum, values), y = values, colour = factor(typ))) +
 geom_jitter(width = 0.15, height = 0.05) +
 stat_summary(fun.y = mean, geom = "line", aes(group = factor(typ)))

enter image description here

(我稍稍更改了您的数据,以便包含更多观察值。)

数据

df <- structure(list(typ = structure(c(2L, 1L, 2L, 2L, 1L, 2L, 1L, 
2L, 2L, 1L, 2L, 1L, 2L, 2L, 1L), .Label = c("N", "T"), class = "factor"), 
    samplenum = c(7, 7, 6, 8, 8, 7, 7, 6, 8, 8, 7, 7, 6, 8, 8
    ), values = c(1L, 3L, 2L, 1L, 3L, 3L, 1L, 3L, 2L, 2L, 2L, 
    1L, 3L, 1L, 2L)), .Names = c("typ", "samplenum", "values"
), row.names = c(NA, -15L), class = "data.frame")

包含您输入数据的结果图

enter image description here