R(ggplot2)中密度图下的梯度着色

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R(ggplot2)中密度图下的梯度着色相关的知识,希望对你有一定的参考价值。

我正在尝试使用ggplot2在R中的密度图下渐变阴影。我不断得到密度图,但没有阴影。

library(quantmod)
library(ggplot2)
library(ggfortify)

getSymbols('XLE')
energy <- coredata(Delt(XLE$XLE.Adjusted, k = 1)["2018-03-08::"])
ggplot(energy, aes(energy)) +
    geom_density(aes(x = energy, fill = energy))+
    scale_fill_gradient2( energy ,
        low = "darkred", high = "navy", mid = "orange", midpoint = 0)

这产生了根本没有填充的曲线。

以下是可重现数据的类似示例:

test.data <- data.frame(exp(runif(1000,0,1)))

ggplot(test.data, aes(test.data))+
    geom_density(aes(fill = test.data)) +
    scale_fill_gradient(test.data, low = "navy", high = "red")

产量

enter image description here

答案

好吧,我整个周末一直在研究这个问题,最后我想出了相对于R中x轴的密度图下阴影的答案。

让我们设置一些可重现的数据:

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

然后我们需要在数据框中添加一个虚假因子“name”:

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

从这里,我们可以使用ggplot2和ggridges库:

library(ggplot2)
library(ggridges)

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

产量:this plot

以上是关于R(ggplot2)中密度图下的梯度着色的主要内容,如果未能解决你的问题,请参考以下文章

R语言使用ggplot2包使用geom_density()函数绘制密度图(连续色彩离散色彩梯度色彩)实战(density plot)

R语言ggplot2可视化热力图(密度图)并使用scale_fill_continuous函数自定义图像的色彩梯度(colour gradient)自定义设置图例中的色彩梯度反序(reverse)

ggplot2中密度曲线下的阴影区域

R语言ggplot2可视化:ggplot2可视化密度图(显示数据密集区域)ggplot2可视化密度图(对数坐标):log10比例的收入密度图突出了在常规密度图中很难看到的收入分布细节

R语言ggplot2可视化:使用R原生plot函数为指定曲线下面的区域着色ggplot2可视化在曲线的特定下方添加分割线ggplot2为指定曲线下面的区域着色

R语言ggplot2可视化:绘制堆叠的密度图(Stacked Area Chart)