后验地更改 ggplot geom 的颜色(在指定了另一种颜色之后)

Dom*_*ski 5 plot r ggplot2

包中的函数返回一个带有我想更改的预设颜色的 ggplot。

例如,让我们模拟该图:

library(ggplot2)
df <- data.frame(x = rnorm(1000))

p <- ggplot(df, aes(x=x)) +
  geom_density(fill="#2196F3")
p
Run Code Online (Sandbox Code Playgroud)

这是一个蓝色填充的密度图。

我想后验地改变它的颜色。

我试过这样做:

p + scale_fill_manual(values=c("#4CAF50"))
p
Run Code Online (Sandbox Code Playgroud)

但它不会改变任何东西。

我也试过:

p <- p + geom_density(fill="black")
p
Run Code Online (Sandbox Code Playgroud)

但这在前一层之上添加了一层,而不会改变它。

我也试图深入研究 ggplot 对象,但我在那里迷路了。

有没有什么方便的方法可以改变后验几何的属性?

谢谢

Lyz*_*deR 7

尝试这个:

#this is blue
p <- ggplot(df, aes(x=x)) +
  geom_density(fill="#2196F3")

#convert to red
p$layers[[1]]$aes_params$fill <-  'red'
p
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

填充颜​​色被保存p$layers[[1]]$aes_params$fill并可以通过这种方式进行修改。