r - 我想在 for 循环中使用 ggplot2 制作多个绘图,但它无法识别 aes() 中的 Y 变量
问题描述
我有一个名为 TumorData 的数据框,其中列是不同基因的基因表达数据,行是不同的患者。我想要其中一列(名称为 TP53)针对第 3 到 12 列中的每个基因的散点图。我做了以下
for(i in 3:12) {
GeneName <- colnames(TumorData[, i])
FileName <- paste0(GeneName, ".png")
ggplot(TumorData, aes(x = TP53, y = GeneName)) +
geom_point()
ggsave(FileName)
}
但是当我转到保存的文件时,它就好像它是一个一维图:只有第一个参数(TP53)被相应地绘制。一切都在同一条水平线上,Y 轴甚至没有数字刻度。该循环确实读取了“GeneName”,因为实际的基因名称出现在每个图表的 Y 轴上,但就像它不“理解”它是数据框中列的名称并且它应该检索数值从那里。我附上了一张图表的外观图片,因为我不确定我是否足够清楚地解释自己。 这就是图表的外观
抱歉,如果这太愚蠢了,我是 R 新手,对循环没有太多经验,更不用说循环和图表了。关于如何纠正这个问题的任何想法?
编辑:我按照 stefan 说的做了,并像这样使用了.data
for(i in 3:12) {
GeneName <- colnames(AllPatients[, i])
FileName <- paste0(GeneName, ".png")
ggplot(AllPatients, aes(x = TP53, y = .data[[GeneName]])) +
geom_point()
ggsave(FileName)
}
它奏效了,谢谢!
解决方案
推荐阅读
- jquery - 带有 Iframe 表单的 HTML 文件,使用框架外的按钮通过 JQuery 提交表单按钮
- vb.net - 按名称循环文本框
- python - 在 Python 数据框中选择列时出错
- html - 创建一个没有固定布局的 HTML 表格,设置了最大宽度,并且行不换行但有溢出:隐藏
- java - 什么是“未解决的编译问题”?
- python - 使用 pika 为 RabbitMQ 确认消息
- shopify - Translation API 自动将文本内容翻译成不同的语言?
- python - 如何将文本边界框与 pyplot.Rectangle 对齐?
- python - 导入类的问题
- java - Spring boot - Couchbase AbstractCouchbaseConfiguration - 如何避免覆盖不必要的方法