r - 更改循环中多个图的颜色

标签 r ggplot2

我想使用 R cookbook 函数 multiplot 生成一张图片,其中包含多个图表,这些图表通过配色方案可视化表格中的值(离散)。为此,我想在一个循环中制作一个 ggplot 对象列表。我通过 color=as.factor(unlist(colors2[i,]))[sort.cd34] 设置颜色,但这导致所有图中的颜色编码相同,显然是因为相同每次都使用 colors2 行,而不是依赖于循环中的 i

nr.plot <- 9
colors2 <- Table1[1:nr.plot,11:38]
snp.plot <- list()
for (i in 1:nr.plot){
  p1 <- ggplot(scan,aes(x=c(1:28),y=cd34,color=as.factor(unlist(colors2[i,]))[sort.cd34])) +geom_point() + scale_color_manual(breaks=c("0","1","2"),values=c("yellow","orange","red")) 
  snp.plot[[i]] <- p1
}

我怎样才能避免这种情况并从 colors2 中为每个绘图对象获取不同的因子列表?我不知道它是否相关,但是 p1$mapping 给出输出:

* x      -> c(1:28)
* y      -> cd34
* colour -> as.factor(unlist(colors2[i, ]))[sort.cd34]

变量 colour 不应该包含我的来自 colors2 的因子向量以使整个事情起作用吗? 感谢您的帮助!

最佳答案

您将颜色美学 与颜色比例 混淆了。设置 aes(color = some.factor) 只是告诉 ggplot 颜色应该随着 some.factor 的水平而改变。仅此一项不会设置使用的颜色,并且 ggplot 将在循环的每次迭代中使用相同的默认值。要更改用于不同级别的实际颜色,您需要在 scale_color_manual() 中设置它们。现在,您正在设置:

scale_color_manual(breaks=c("0","1","2"),values=c("yellow","orange","red")) 

在循环的每次迭代中,当然所有颜色都是相同的。

在您的示例中,以下内容可能有效:

scale_color_manual(values = unlist(colors2[i, ]))

关于r - 更改循环中多个图的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40288165/

相关文章:

r - 在 ggplot2 直方图中添加与 bin 高度相同的选定观测值的标签

r - 为什么 gplot2::labs() 不覆盖/更新比例函数的名称参数(即 ggplot2::scale_*_(name =))?

r - 如何在 R 中使用带有 sf/rnaturalearth/ggplot 的 Mollweide 投影旋转世界地图?

python - 解决具有特定约束的分配问题

随机打乱句子中单词中的字母

r - 如何将列名传递给处理 data.frames 的函数

r - R 中带有 alpha 透明直方图的散点图

r - 通过参数连接 data.table

r - 在 R 中取消列出并保留完整的列表名称

r - 将数据框转换为列表的树形结构列表