【发布时间】:2020-05-11 07:41:21
【问题描述】:
我已经尝试了在 Stack Exchange 上找到的 for 循环和 lapply 循环的每一次迭代,以创建 ggplots,这段代码对我来说效果很好。我唯一的问题是我无法分配唯一的标题和标签。从我在函数中可以看出,我获取了我的响应变量的值,因此我无法将我想要的标题作为标题字符串中的第 i 个条目进行索引。
我提供的示例创建了具有正确值的绘图,但绘图列表中的第二个和第三个绘图没有正确的标题或标签。
模拟数据集:
library(ggplot2)
nms=c("SampleA","SampleB","SampleC")
measr1=c(0.6,0.6,10)
measr2=c(0.6,10,0.8)
measr3=c(0.7,10,10)
qual1=c("U","U","")
qual2=c("U","","J")
qual3=c("J","","")
df=data.frame(nms,measr1,qual1,measr2,qual2,measr3,qual3,stringsAsFactors = FALSE)
识别数据集中包含响应变量的列
measrsindex=c(2,4,6)
创建显示每次测量的所有样本的图列表
plotlist=list()
plotlist=lapply(df[,measrsindex], function(i) ggplot(df,aes_string(x="nms",y=i))+
geom_col()+
ggtitle("measr1")+
geom_text(aes(label=df$qual1)))
创建显示每个样本的所有测量值的图列表
plotlist2=list()
plotlist2=lapply(df[,measrsindex],function(i)ggplot(df,aes_string(x=measrsindex, y=i))+
geom_col()+
ggtitle("SampleA")+
geom_text(aes(label=df$qual1)))
问题是我无法为每个图创建唯一的标题。(示例中的所有图都有标题“measr1”或“SampleA)
另外我不能为每个条应用唯一标签(来自 qual 列)。(例如,qual 2 的字母应该出现在每个样本的 measr2 列的顶部)
此外,在第二个绘图列表中,x 值不是“measr1”、“measr2”、“measr3”,它们是那些不理想的列的索引值。
我对 R 比较陌生,之前从未在 Stack Overflow 上发过帖子,因此欢迎对我的问题提供任何反馈或发布问题。
我找到了很多关于这类主题的问题和答案,但没有一个像我的那样具有数据结构或所需的情节。如果这是一个多余的问题,我深表歉意,但我已尝试在以前的答案中找到解决方案但一直无法解决。
这是我获得创建循环的原始代码的地方,但是此示例不包含标题或标签: Looping over ggplot2 with columns
【问题讨论】:
标签: r ggplot2 lapply geom-text ggtitle