在 R 中使用 Geom_Text 选择性粘贴的子集或 Grep
Subset or Grep for selectively pasting using Geom_Text in R
我正在尝试使用 geom_text
添加 select 文本,用于我使用 lapply
和 split
函数生成的一系列 ggplots。本质上,我正在为每个 Component.name.x
创建一个 ggplot,其中每个图包含 3 条曲线 - 每个 group.name
.
一个
作为我的数据框 (working2.df) 的简短示例:
group.name Component.name.x TCAmount Ratio Slope Intercept
1A-Alprazolam Alprazolam 0.0 0.05 0.5 0.4
1A-Alprazolam Alprazolam 1.5 0.07 0.5 0.4
1A-Alprazolam Alprazolam 3.1 0.08 0.5 0.4
1A-Alprazolam Alprazolam 6.25 0.10 0.5 0.4
2A-Alprazolam Alprazolam 0.0 0.06 0.4 0.3
2A-Alprazolam Alprazolam 1.5 0.08 0.4 0.3
2A-Alprazolam Alprazolam 3.1 0.09 0.4 0.3
2A-Alprazolam Alprazolam 6.25 0.10 0.4 0.3
1B-Alprazolam Alprazolam 0.0 0.05 0.5 0.6
1B-Alprazolam Alprazolam 1.5 0.08 0.5 0.6
1B-Alprazolam Alprazolam 3.1 0.10 0.5 0.6
1B-Alprazolam Alprazolam 6.25 0.11 0.5 0.6
1A-Codeine Codeine 0.0 0.10 0.5 0.6
1A-Codeine Codeine 1.5 0.30 0.5 0.6
1A-Codeine Codeine 3.1 0.41 0.5 0.6
1A-Codeine Codeine 6.25 0.62 0.5 0.6
2A-Codeine Codeine 0.0 0.09 0.6 0.7
2A-Codeine Codeine 1.5 0.29 0.6 0.7
2A-Codeine Codeine 3.1 0.40 0.6 0.7
2A-Codeine Codeine 6.25 0.62 0.6 0.7
1B-Codeine Codeine 0.0 0.09 0.6 0.5
1B-Codeine Codeine 1.5 0.28 0.6 0.5
1B-Codeine Codeine 3.1 0.41 0.6 0.5
1B-Codeine Codeine 6.25 0.61 0.6 0.5
目前我正在使用以下方法绘制数据:
plotIntra<-function(working2.df){
ggplot(working2.df,aes(x=TCAmount,y=Ratio, group=group.name, colour=group.name))+
geom_smooth(method=lm, level=0.95, se=FALSE, aes(colour=group.name))+
theme_bw()+
ggtitle(working2.df$Component.name.x[1])+
xlab("Amount (ng/mL)") +ylab("Response Ratio")+
expand_limits(y=0)+
geom_text(data=working2.df, aes(label=paste("y=", Slope[1], "x+", Intercept[1], sep="")))
}
lapply(split(working2.df, working2.df$Component.name.x), function(x) try(plotIntra(x)))
我想要的是让 R 在每个 group.name
中抓取每个 Slope
和 Intercept
一次,并将其粘贴到具有相应曲线的图表上。到目前为止,我只设法为每个图上的所有曲线得到 y=mx+b (sigh) 或将 y=mx+b 文本粘贴很多很多重复在同一个地块上多次。
我一直在尝试做的(但不知道是否可行)是让 R 认为有一个数据子集只包含 Slope
和 Intercept
一次,它匹配 group.name
,或者以某种方式使用 grep
或 subset
来提取数据。也许是这样的(但这不起作用):
geom_text(data=working2.df, grep("1A", working2.df$group.name)),
aes(label=paste("y=", Slope[1], "x+", Intercept[1], sep=""))
有人认为他们可以帮助解决这个问题并成为 ggplot 英雄吗?!
您可以折叠函数中的值并为 geom_text
使用不同的 data=
参数
plotIntra<-function(working2.df){
lbls <- aggregate(cbind(TCAmount,Ratio)~group.name+Slope+Intercept, working2.df, mean)
ggplot(working2.df,aes(x=TCAmount,y=Ratio, group=group.name, colour=group.name))+
geom_smooth(method=lm, level=0.95, se=FALSE, aes(colour=group.name))+
theme_bw()+
ggtitle(working2.df$Component.name.x[1])+
xlab("Amount (ng/mL)") +ylab("Response Ratio")+
expand_limits(y=0)+
geom_text(data=lbls, aes(label=paste("y=", Slope[1], "x+", Intercept[1], sep="")))
}
lapply(split(working2.df, working2.df$Component.name.x), function(x) try(plotIntra(x)))
我正在尝试使用 geom_text
添加 select 文本,用于我使用 lapply
和 split
函数生成的一系列 ggplots。本质上,我正在为每个 Component.name.x
创建一个 ggplot,其中每个图包含 3 条曲线 - 每个 group.name
.
作为我的数据框 (working2.df) 的简短示例:
group.name Component.name.x TCAmount Ratio Slope Intercept
1A-Alprazolam Alprazolam 0.0 0.05 0.5 0.4
1A-Alprazolam Alprazolam 1.5 0.07 0.5 0.4
1A-Alprazolam Alprazolam 3.1 0.08 0.5 0.4
1A-Alprazolam Alprazolam 6.25 0.10 0.5 0.4
2A-Alprazolam Alprazolam 0.0 0.06 0.4 0.3
2A-Alprazolam Alprazolam 1.5 0.08 0.4 0.3
2A-Alprazolam Alprazolam 3.1 0.09 0.4 0.3
2A-Alprazolam Alprazolam 6.25 0.10 0.4 0.3
1B-Alprazolam Alprazolam 0.0 0.05 0.5 0.6
1B-Alprazolam Alprazolam 1.5 0.08 0.5 0.6
1B-Alprazolam Alprazolam 3.1 0.10 0.5 0.6
1B-Alprazolam Alprazolam 6.25 0.11 0.5 0.6
1A-Codeine Codeine 0.0 0.10 0.5 0.6
1A-Codeine Codeine 1.5 0.30 0.5 0.6
1A-Codeine Codeine 3.1 0.41 0.5 0.6
1A-Codeine Codeine 6.25 0.62 0.5 0.6
2A-Codeine Codeine 0.0 0.09 0.6 0.7
2A-Codeine Codeine 1.5 0.29 0.6 0.7
2A-Codeine Codeine 3.1 0.40 0.6 0.7
2A-Codeine Codeine 6.25 0.62 0.6 0.7
1B-Codeine Codeine 0.0 0.09 0.6 0.5
1B-Codeine Codeine 1.5 0.28 0.6 0.5
1B-Codeine Codeine 3.1 0.41 0.6 0.5
1B-Codeine Codeine 6.25 0.61 0.6 0.5
目前我正在使用以下方法绘制数据:
plotIntra<-function(working2.df){
ggplot(working2.df,aes(x=TCAmount,y=Ratio, group=group.name, colour=group.name))+
geom_smooth(method=lm, level=0.95, se=FALSE, aes(colour=group.name))+
theme_bw()+
ggtitle(working2.df$Component.name.x[1])+
xlab("Amount (ng/mL)") +ylab("Response Ratio")+
expand_limits(y=0)+
geom_text(data=working2.df, aes(label=paste("y=", Slope[1], "x+", Intercept[1], sep="")))
}
lapply(split(working2.df, working2.df$Component.name.x), function(x) try(plotIntra(x)))
我想要的是让 R 在每个 group.name
中抓取每个 Slope
和 Intercept
一次,并将其粘贴到具有相应曲线的图表上。到目前为止,我只设法为每个图上的所有曲线得到 y=mx+b (sigh) 或将 y=mx+b 文本粘贴很多很多重复在同一个地块上多次。
我一直在尝试做的(但不知道是否可行)是让 R 认为有一个数据子集只包含 Slope
和 Intercept
一次,它匹配 group.name
,或者以某种方式使用 grep
或 subset
来提取数据。也许是这样的(但这不起作用):
geom_text(data=working2.df, grep("1A", working2.df$group.name)),
aes(label=paste("y=", Slope[1], "x+", Intercept[1], sep=""))
有人认为他们可以帮助解决这个问题并成为 ggplot 英雄吗?!
您可以折叠函数中的值并为 geom_text
data=
参数
plotIntra<-function(working2.df){
lbls <- aggregate(cbind(TCAmount,Ratio)~group.name+Slope+Intercept, working2.df, mean)
ggplot(working2.df,aes(x=TCAmount,y=Ratio, group=group.name, colour=group.name))+
geom_smooth(method=lm, level=0.95, se=FALSE, aes(colour=group.name))+
theme_bw()+
ggtitle(working2.df$Component.name.x[1])+
xlab("Amount (ng/mL)") +ylab("Response Ratio")+
expand_limits(y=0)+
geom_text(data=lbls, aes(label=paste("y=", Slope[1], "x+", Intercept[1], sep="")))
}
lapply(split(working2.df, working2.df$Component.name.x), function(x) try(plotIntra(x)))