在ggplot2中的密度图上应用渐变填充

时间:2017-08-14 15:06:43

标签: r ggplot2

是否可以在ggplot2中为密度图添加渐变填充,以使图表中的颜色沿x轴变化?在下面的示例中,fill参数似乎被忽略。

library(ggplot2)
ggplot(data.frame(x = rnorm(100)), aes(x = x, fill = x)) + geom_density()

2 个答案:

答案 0 :(得分:4)

总是可以选择手动计算密度:

Sub Auto_Run()
Run ("killemptyF")
End Sub 

enter image description here

答案 1 :(得分:2)

ggridges库有您的答案。

以下是一些可重现的数据:

library(ggplot2)
library(ggridges)

input   = runif(1000, 0, 1)
output  = exp(input) + cos(input)^runif(1000,0,1)

现在我们需要创建一个虚拟因子,将其全部包装在数据框中,然后将虚拟变量标记为因子:

name    = rep("Name", length(output))
data    = data.frame(input, output, name)
data$name = as.factor(data$name)

从这里我们可以建立密度图:

ggplot(data, aes(x=output, y=name, fill=..x..))+
    geom_density_ridges_gradient()+
    scale_fill_gradient(low="orange", high="navy")

根据x轴值产生梯度填充密度图。当然,从这一点开始,您可以使用ggplot2库在图表上添加/减去您想要的任何内容。

Gradient Filled Density Plot - Example