gpt4 book ai didi

r - 更改由函数创建的 ggplot 对象的颜色

转载 作者:行者123 更新时间:2023-12-04 11:49:00 29 4
gpt4 key购买 nike

我正在使用 fgsea 库进行一些分析,特别是我经常使用 plotEnrichment 函数。此函数返回一个包含所有图层的 ggplot 对象,但我想将它显示的曲线从明亮更改为其他内容。这段代码

library(fgsea)
data(examplePathways)
data(exampleRanks)
p = plotEnrichment(examplePathways[["5991130_Programmed_Cell_Death"]], exampleRanks)

将返回此图 Basic fgsea plotEnrichment plot

有什么方法可以在创建后更改颜色?

注意:我很确定有一些方法可以很容易地做到这一点,但我没有创建绘图,所以我不知道每个图层的名称或它们是如何创建的。


按照 BrianFisher 的建议,我尝试了

p + scale_color_brewer(palette="GnBu")
p + scale_color_manual(values=c("blue","red"))

但据我所知,他们并没有改变剧情。

最佳答案

实现此目的的另一种方法是使用以下代码直接更改 ggplot 对象:

## change the aes parameter in the object
p$layers[[5]]$aes_params$colour <- 'blue'
## then plot p
p

这会产生以下图表:

enter image description here

简短的演练

这种技术在很多场合都证明对我有用。因此,一些更详细的信息:

p$layers 为我们提供了需要进一步挖掘的信息:我们需要访问 geom_line 配置。因此,在查阅了以下信息后,我们选择继续使用 p$layers[[5]]

> p$layers
[[1]]
geom_point: na.rm = FALSE
stat_identity: na.rm = FALSE
position_identity

[[2]]
mapping: yintercept = ~yintercept
geom_hline: na.rm = FALSE
stat_identity: na.rm = FALSE
position_identity

[[3]]
mapping: yintercept = ~yintercept
geom_hline: na.rm = FALSE
stat_identity: na.rm = FALSE
position_identity

[[4]]
mapping: yintercept = ~yintercept
geom_hline: na.rm = FALSE
stat_identity: na.rm = FALSE
position_identity

[[5]]
geom_line: na.rm = FALSE
stat_identity: na.rm = FALSE
position_identity

[[6]]
mapping: x = ~x, y = ~-diff/2, xend = ~x, yend = ~diff/2
geom_segment: arrow = NULL, arrow.fill = NULL, lineend = butt, linejoin = round, na.rm = FALSE
stat_identity: na.rm = FALSE
position_identity

如果我们在 p$layers[[5]] 之后添加 $,我们可以选择扩展代码(在 RStudio 中),如下图所示:

enter image description here

我们选择aes_params并添加一个新的$。那一刻,唯一的选择是color。我们在端点:在这里我们可以设置geom_line的颜色。

所以,现在您知道这些骇人听闻的神秘代码是从哪里来的了;这是最后一次:

p$layers[[5]]$aes_params$colour <- 'blue'

关于r - 更改由函数创建的 ggplot 对象的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59213301/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com