ggplot中的绘制线与绘图中存在的分组数据无关

时间:2017-03-20 18:14:38

标签: r ggplot2 boxplot p-value

我在ggplot中绘制线条很困难。我在背诵here讨论的问题。解决方案表明,当我在gplot美学中引入了一个因素时,它不起作用。这是代码。

pp <- ggplot(mtcars, aes(factor(cyl), mpg, colour = factor(cyl))) + geom_boxplot()
df1 <- data.frame(a = c(1, 1:3,3), b = c(39, 40, 40, 40, 39))
df2 <- data.frame(a = c(1, 1,2, 2), b = c(35, 36, 36, 35))
df3 <- data.frame(a = c(2, 2, 3, 3), b = c(24, 25, 25, 24))
pp + geom_line(data = df1, aes(x = a, y = b)) + annotate("text", x = 2, y = 42, label = "*", size = 8) +
geom_line(data = df2, aes(x = a, y = b)) + annotate("text", x = 1.5, y = 38, label = "**", size = 8) +
geom_line(data = df3, aes(x = a, y = b)) + annotate("text", x = 2.5, y = 27, label = "n.s.", size = 8)

这会产生错误Error in factor(cyl) : object 'cyl' not found。我知道我没有在这里描述最好的数据,但我希望问题很清楚。我想在ggplot上绘制一条单色线,并在其上面写出显着性值,而不管在图中的分组。

1 个答案:

答案 0 :(得分:1)

您的错误发生是因为ggplot2正在尝试将colour = factor(cyl)应用于其数据中没有cyl列的行。这可以通过将该美学移到geom_boxplot()层中来解决:

pp <- ggplot(mtcars, aes(factor(cyl), mpg)) + geom_boxplot(aes(colour = factor(cyl)))