我之前写过一篇关于R-ggridges包的文章:
R-ggridges包的改进
其中关于R-ggridges包的问题1今天有了新的认识,并做修正奉献给大家。ggridges包有一个很惊艳的函数geom_density_ridges_gradient()可以绘制多数据系列的核密度估计图,如下图所示:
#代码如下:
library(ggplot2)
library(ggridges)
#theme_set(theme_ridges())
ggplot(lincoln_weather, aes(x = `Mean Temperature [F]`, y = `Month`)) +
geom_density_ridges_gradient(aes(fill = `Month`), scale = 3, size = 0.3) + theme(legend.position = "none")
在这个函数中,fill的颜色还可以以x轴的数值作为映射,如下图所示:
#代码如下:
library(ggplot2)
library(ggridges)
#theme_set(theme_ridges())
library(RColorBrewer)
Colormap<- colorRampPalette(rev(brewer.pal(11,'Spectral')))(32)
ggplot(lincoln_weather, aes(x = `Mean Temperature [F]`, y = `Month`)) +
geom_density_ridges_gradient(aes(fill = ..x..), scale = 3, size = 0.3 ) +
scale_fill_gradientn(colours=Colormap,name = "Temp. [F]")
我之前说的ggridges包中, 由于没有Y轴数值,无法得知每个数据系列对应的Y轴数值,也就无法得到核密度估计得具体数值,只能看到数据大概的分布形状;
核密度估计面积的高度对应核密度估计得数值,这就相当于将Y轴的对应数值使用颜色映射实现啦。
有朋友Hazard在知乎上说还是可以通过ggridges包实现的,具体代码如下:
#代码如下:
library(ggplot2)
library(ggridges)
#theme_set(theme_ridges())
library(RColorBrewer)
ggplot(lincoln_weather,
aes(x = `Mean Temperature [F]`, y = rev(`Month`), fill = ..density..)) +
geom_density_ridges_gradient(scale = 3, rel_min_height = 0.01,size = 0.3) +
scale_fill_gradientn(colours = colorRampPalette(rev(brewer.pal(11,'Spectral')))(32))
但是对于不是核密度估计的图表,ggridges包还是没有办法实现。下面就是使用山峰叠峦图