包中的函数返回一个ggplot,其中包含我想要更改的预设颜色。
例如,让我们模拟该情节:
library(ggplot2)
df <- data.frame(x = rnorm(1000))
p <- ggplot(df, aes(x=x)) +
geom_density(fill="#2196F3")
p
这是一张蓝色的密度图。
我想改变它的颜色。
我已经尝试过:
p + scale_fill_manual(values=c("#4CAF50"))
p
但它并没有改变任何事情。
我也尝试过:
p <- p + geom_density(fill="black")
p
但是,这会在前一个图层之上添加一个图层,而不会更改它。
我也试图深入挖掘ggplot对象,但我迷失在那里。
有没有方便的方法来改变后验的geom属性?
由于
答案 0 :(得分:3)
试试这个:
#this is blue
p <- ggplot(df, aes(x=x)) +
geom_density(fill="#2196F3")
#convert to red
p$layers[[1]]$aes_params$fill <- 'red'
p
填充颜色保存在p$layers[[1]]$aes_params$fill
中,可以通过这种方式进行修改。
答案 1 :(得分:2)
正如Roland所说,我会在fill
中为aes()
创建一个虚拟变量,然后更改颜色。
set.seed(111)
df <- data.frame(x = rnorm(1000),
dummy = "a", stringsAsFactors = FALSE)
p <- ggplot(df, aes(x=x, fill = dummy)) +
geom_density(show.legend = FALSE) +
scale_fill_manual(values = "#2196F3")
p2 <- ggplot(df, aes(x=x, fill = dummy)) +
geom_density(show.legend = FALSE) +
scale_fill_manual(values = "#4CAF50")