背景介绍
今天来给大家介绍一种新的图形——山脊图(ridgeline plot),山脊图主要可以用来进行几个组的数值变量分布的研究,通俗点讲,就是用来进行多个组之间数据的比较。
如下所示,我们就进行了不同品质钻石价格的变化比较:
软件介绍
[软件名称]:R(4.1.2)
[软件名称]:RStudio(1.4.1106)
绘图教程
1.我们使用R语言自带的数据diamonds进行绘图,首先看一下该数据集的格式
2.首先我们加载两个包ggridges和ggplot2,ggridges是用来协助ggplot进行图形绘制的
library(ggridges)
library(ggplot2)
3.老规矩,我们先看一下该函数的介绍,方便参数的更改
4.进行图形的绘制,基本的框架就出来了
ggplot(diamonds, aes(x = price, y = cut, fill = cut)) +
geom_density_ridges()
5.上述是一种图形格式,如果我们想更改另一种样子呢?只需要更改一下stat = "binline"参数即可
ggplot(diamonds, aes(x = price, y = cut, fill = cut)) +
geom_density_ridges(stat = "binline",bins=20)
6.如何将Y轴进行翻转呢?直接提取y轴的水平:levels(diamonds$cut),然后使用rev()函数进行逆转即可
diamonds$cut <- factor(diamonds$cut,levels = rev(levels(diamonds$cut)))
ggplot(diamonds, aes(x = price, y = cut, fill = cut)) +
geom_density_ridges(stat = "binline",bins=20)
7.最后就是对图形风格的调节,参数如下,可以按照个人喜欢的风格搭配
library(RColorBrewer) #填充颜色
windowsFonts(A=windowsFont("Times New Roman")) #字体
ggplot(diamonds, aes(x = price, y = cut, fill =cut))+
geom_density_ridges()+
theme(legend.position = "none", #删除Legend
text = element_text(family = "A",size =18), #调节字体格式
panel.background = element_rect(fill =c("#FFE4C4")),
panel.border = element_rect(fill = NA,colour = "black",size = 1.5)) #边框调节
8.快来试试吧