R 如何绘制具有显著水平的箱线图?
不久前,我问了一个关于绘制箱线图的问题 我有3个不同组(或标签)的一些数据。我可以使用以下R代码获得箱线图R 如何绘制具有显著水平的箱线图?,r,ggplot2,boxplot,significance,R,Ggplot2,Boxplot,Significance,不久前,我问了一个关于绘制箱线图的问题 我有3个不同组(或标签)的一些数据。我可以使用以下R代码获得箱线图 library(reshape2) library(ggplot2) morphData <- read.table(".\\TestData3.csv", sep=",", header=TRUE); morphData.reshaped <- melt(morphData, id.var = "Label") ggplot(data = morphData.reshap
library(reshape2)
library(ggplot2)
morphData <- read.table(".\\TestData3.csv", sep=",", header=TRUE);
morphData.reshaped <- melt(morphData, id.var = "Label")
ggplot(data = morphData.reshaped, aes(x=variable, y=value)) +
+ geom_boxplot(aes(fill=Label))
library(重塑2)
图书馆(GG2)
morphData我不太明白你所说的具有显著级别的箱线图是什么意思,但这里有一个建议,建议你如何生成这些条线:我将解决这个问题,用条线的坐标构造小数据帧。这里有一个例子:
pp <- ggplot(mtcars, aes(factor(cyl), mpg)) + 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)
pp我知道这是一个老问题,DatamineR的答案已经为这个问题提供了一个解决方案。但我最近创建了一个ggplot扩展,它简化了添加重要性条的整个过程:
您只需添加一个图层geom\u符号
,而不是繁琐地将geom\u线
和注释
添加到绘图中:
library(ggplot2)
library(ggsignif)
ggplot(iris, aes(x=Species, y=Sepal.Length)) +
geom_boxplot() +
geom_signif(comparisons = list(c("versicolor", "virginica")),
map_signif_level=TRUE)
该软件包的完整文档可在以下位置获得。注释是否为您所需的“重要性”,有时与p值一起出现的重要性代码,如summary.lm
?在给定的背景下,零假设对每一对都是相等的?ggplot是您的要求吗?谢谢您的回答!然而,如果你的ggplot有fill=factor(cyl),这就不起作用了。例如,你知道为什么会出现这种情况吗?@par你把它放在哪里了?如果你把它放在geom_盒形图(aes(fill=factor(cyl)))
中,它就可以工作了……你必须在各个geom中添加fill或color,而不是在对ggplot的主调用中;否则,ggplot将把aes()参数作为全局参数,并且在随后对geom的调用中找不到它。谢谢你的回答,虽然,它被证明是超级容易做!