R ggplot2:向线形图添加显著性级别
我有下面的MWE,其中我用刻面绘制了一些线条图 我的数据在R ggplot2:向线形图添加显著性级别,r,testing,ggplot2,R,Testing,Ggplot2,我有下面的MWE,其中我用刻面绘制了一些线条图 我的数据在mymelt数据框中,我想向存储在pvmelt数据框中的绘图添加重要值 我本打算用geom\u text来尝试这一点,但我想知道是否有更正确的方法使用geom\u signif来实现这一点 这是我到目前为止的MWE: ##MWE library(reshape2) library(ggplot2) set.seed(3) mydf <- data.frame(treatment=rep(c('control','drug'),eac
mymelt
数据框中,我想向存储在pvmelt
数据框中的绘图添加重要值
我本打算用geom\u text
来尝试这一点,但我想知道是否有更正确的方法使用geom\u signif
来实现这一点
这是我到目前为止的MWE:
##MWE
library(reshape2)
library(ggplot2)
set.seed(3)
mydf <- data.frame(treatment=rep(c('control','drug'),each=3), time=rep(c('week1','week2','week3'),2), fit1=runif(6, 0, 10), fit2=runif(6, 0, 10))
mymelt <- melt(mydf, measure.vars=c('fit1','fit2'))
mymelt
pvdf <- data.frame(contrast='drug - control', time=c('week1','week2','week3'), pv1=runif(3, 0, 0.075), pv2=runif(3, 0, 0.075))
pvmelt <- melt(pvdf, measure.vars=c('pv1','pv2'))
pvmelt$map.signif <- ifelse(pvmelt$value > 0.05, "", ifelse(pvmelt$value > 0.01,"*", "**"))
pvmelt
png(filename='test.png', height=500, width=800)
print(
ggplot(mymelt, aes(x=time, y=value, group=treatment, col=treatment, shape=treatment)) +
facet_grid(variable~.) +
geom_line(aes(lty=treatment), size=1.5) +
geom_point(alpha=0.5, size=4)
)
dev.off()
而pvmelt
看起来是这样的:
> mymelt
treatment time variable value
1 control week1 fit1 1.680415
2 control week2 fit1 8.075164
3 control week3 fit1 3.849424
4 drug week1 fit1 3.277343
5 drug week2 fit1 6.021007
6 drug week3 fit1 6.043941
7 control week1 fit2 1.246334
8 control week2 fit2 2.946009
9 control week3 fit2 5.776099
10 drug week1 fit2 6.309793
11 drug week2 fit2 5.120159
12 drug week3 fit2 5.050239
> pvmelt
contrast time variable value map.signif
1 drug - control week1 pv1 0.040052652 *
2 drug - control week2 pv1 0.041793708 *
3 drug - control week3 pv1 0.065093962
4 drug - control week1 pv2 0.062228152
5 drug - control week2 pv2 0.008358687 **
6 drug - control week3 pv2 0.052776627
我生成的图如下所示:
但是我想要这样的东西,带有pvmelt
map.signif信息:
实现这一目标的最佳方法是什么?以下内容将创建一个与您所寻找的内容类似的图表:
library(dplyr)
# change pvmelt's variable values to match mymelt's variable values
levels(pvmelt$variable) <- levels(mymelt$variable)
# join data frames
df <- left_join(mymelt,
pvmelt %>% select(time, variable, map.signif),
by = c("time", "variable"))
ggplot(df,
aes(x = time, y = value,
col = treatment, shape = treatment,
group = treatment, lty = treatment,
label = map.signif)) +
facet_grid(variable~ .) +
geom_line(size = 1.5) +
geom_point(alpha = 0.5, size = 4) +
geom_text(aes(y = max(value) + 0.3), # position slightly above highest point
color = "black", size = 10)
库(dplyr)
#更改pvmelt的变量值以匹配mymelt的变量值
级别(pvmelt$variable)以下内容应创建一个与您所要查找的内容类似的图表:
library(dplyr)
# change pvmelt's variable values to match mymelt's variable values
levels(pvmelt$variable) <- levels(mymelt$variable)
# join data frames
df <- left_join(mymelt,
pvmelt %>% select(time, variable, map.signif),
by = c("time", "variable"))
ggplot(df,
aes(x = time, y = value,
col = treatment, shape = treatment,
group = treatment, lty = treatment,
label = map.signif)) +
facet_grid(variable~ .) +
geom_line(size = 1.5) +
geom_point(alpha = 0.5, size = 4) +
geom_text(aes(y = max(value) + 0.3), # position slightly above highest point
color = "black", size = 10)
库(dplyr)
#更改pvmelt的变量值以匹配mymelt的变量值
级别(pvmelt$variable)不是完全重复的,但解决方案应该有效(由我回答):我不知道这如何适用于这种情况。。。我有不同的重要性等级(*和**),不同的方面,我不想在我的传说中出现“重要”的东西。我知道将pvmelt
添加到mymelt
并使用geom_点
会有帮助,但是使用geom_符号
或geom_文本
解决这个问题不是更好吗?谢谢没有完全重复,但解决方案应该有效(由我回答):我不知道这怎么适用于这个案例。。。我有不同的重要性等级(*和**),不同的方面,我不想在我的传说中出现“重要”的东西。我知道将pvmelt
添加到mymelt
并使用geom_点
会有帮助,但是使用geom_符号
或geom_文本
解决这个问题不是更好吗?谢谢