在ggplot构面中绘制不同值的垂直线

特德·莫斯比

我有这样的数据

> dput(testdat)
structure(list(Type = structure(c(2L, 2L, 2L, 2L, 2L, 2L), .Label = c("Saline", 
"Compound 1"), class = "factor"), Treatment = structure(c(1L, 
2L, 3L, 4L, 6L, 5L), .Label = c(".0032uM", ".016uM", ".08uM", 
".4uM", "2uM", "10uM"), class = "factor"), Peak = c(1071.28430020209, 
1458.23366806524, 2714.49856342393, 3438.83453920159, 3938.86391759534, 
2980.10159109856), Area1 = c(3312.99749863082, 4798.35142770291, 
9044.21362002965, 11241.1497514069, 11575.3444645068, 9521.69011119236
), SS1 = c(781.759834505516, 1191.6273298958, 2180.02082601411, 
2601.33855989239, 2492.11886600804, 2185.39715502702), Conc = c(0.0032, 
0.016, 0.08, 0.4, 10, 2), logconc = c(-2.49485002168009, -1.79588001734408, 
-1.09691001300806, -0.397940008672038, 1, 0.301029995663981), 
    Conc_nm = c(3.2, 16, 80, 400, 10000, 2000), logconc_nm = c(0.505149978319906, 
    1.20411998265592, 1.90308998699194, 2.60205999132796, 4, 
    3.30102999566398)), .Names = c("Type", "Treatment", "Peak", 
"Area1", "SS1", "Conc", "logconc", "Conc_nm", "logconc_nm"), row.names = 2:7, class = "data.frame")

和类似的代码:

testdat$Conc_nm = as.numeric(gsub("([0-9]+).*$", "\\1", testdat$Treatment))*1000
testdat$logconc_nm = log10(testdat$Conc_nm)
testdatMelt = melt(testdat,id.vars = c('Type','Treatment','Conc','logconc','Conc_nm','logconc_nm'))



val=NULL # EC50
vallog=NULL# logEC50
allDR=NULL
for (i in 3:5){
  currentfit=tryCatch(nls(testdat[,i] ~ SSfpl(logconc_nm,A,B,xmid,scal),dat=testdat),error=function(e) 0)
  if(typeof (currentfit)=='list')
    vallog[i]= summary(currentfit)$coefficients[3]
    val[i]=10^summary(currentfit)$coefficients[3]
}  
vallog=vallog[-c(1:2)]
val=val[-c(1:2)]


ggplot(data = testdatMelt,aes(logconc_nm,value))+
  facet_grid(.~variable)+
  geom_point()+
  scale_x_log10(breaks=round(testdat$logconc_nm,2))+
  geom_smooth(method = 'nls',
              formula = y ~ SSfpl(x,A,B,xmid,scal),se=FALSE)+
  geom_vline(color='red',xintercept = 20,alpha=.5)
  geom_text(aes(x=valog-.225,y=9000,color=variable,label = paste('EC50',val,'nM')))

这将基于巨大的变量生成3个构面,并使用自己的NLS适合度来拟合每个构面。我的问题是如何在logEC50值(val)处绘制一条垂直线并用EC50(val)注释该线

我的想法是在geom_line()参数内使用for循环,但这不起作用。IE浏览器ggplot+geom_line(color='red', xintercept = for (i in 1:3){vallog[i]})这显然行不通。还有其他想法吗?

乔兰

通过创建具有适当结构的数据帧,可以在ggplot2中添加图层在这种情况下,您需要在每个面板的不同位置放置一条垂直线。这意味着您需要一个带有变量的数据框,该变量指示特定行应用于哪个面板以及相应的截距:

vert_line_df <- data.frame(variable = c('Peak','Area1','SS1'),
                           vallog = vallog)

然后使用该特定数据在绘图中添加一个图层:

+ geom_vline(data = vert_line_df,aes(xintercept = vallog),color = "black")

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用刻面在ggplot中绘制垂直线

来自分类Dev

在UIView中绘制垂直线

来自分类Dev

在多个图形中绘制垂直线

来自分类Dev

在绘图ggplot中添加垂直线

来自分类Dev

绘制垂直线以区分不同的“类”数据

来自分类Dev

如何在颤振中绘制不同高度的垂直线?

来自分类Dev

Seaborn:如何在累积KDE中绘制与特定y值匹配的垂直线?

来自分类Dev

如何在MATLAB中绘制水平和垂直线?

来自分类Dev

如何在Vim中的括号之间绘制垂直线?

来自分类Dev

在Gnuplot中绘制垂直线以表示一维数据

来自分类Dev

在画布中的圆之间绘制垂直线

来自分类Dev

如何在Swing中绘制垂直线

来自分类Dev

如何在SVG中绘制垂直线

来自分类Dev

调整ggplot中垂直线标签的位置?

来自分类Dev

使用matplotlib绘制垂直线

来自分类Dev

在特定时间绘制垂直线

来自分类Dev

Python-绘制垂直线

来自分类Dev

在图像上方绘制垂直线

来自分类Dev

Python-绘制垂直线

来自分类Dev

ggplot2:彩色垂直线

来自分类Dev

用ggplot标记垂直线

来自分类Dev

在CSS中显示垂直线

来自分类Dev

CSS中的垂直线对齐属性

来自分类Dev

无法在抖动中添加垂直线

来自分类Dev

在Android中创建垂直线

来自分类Dev

如何摆脱Geany中的垂直线

来自分类Dev

垂直线在urxvt中不相交

来自分类Dev

从OpenOffice表格中删除垂直线

来自分类Dev

Notepad ++中右边距的垂直线