网站首页 > 技术文章 正文
背景介绍
今天来给大家介绍一种新的图形——山脊图(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.快来试试吧
猜你喜欢
- 2025-09-04 JAVA入门教程-第2章 基本编程概念
- 2025-09-04 C++基础语法梳理:算法丨十大排序算法(二)
- 2025-09-04 C语言段错误(Segmentation Fault)全面解析:原理、调试与预防
- 2025-09-04 编译器动手实践之:实现C语言函数定义的语法解析
- 2025-09-04 SOLIDWORKS语言切换:如何从英文切换到中文
- 2025-09-04 我如何用C语言构建简单Shell(三)_c语言编写shell
- 2025-09-04 程序员上手 Rust 2 年后感悟:它的确强大,但想要取代 C 还远着呢
- 2025-09-04 我如何用C语言构建简单Shell (一)
- 2025-09-04 rust 每次发送请求时调用Arc::new(peer) 会影响性能吗?
- 2025-09-04 大语言模型学习Python中用__new__()创建实例
- 最近发表
-
- count(*)、count1(1)、count(主键)、count(字段) 哪个更快?
- 深入探索 Spring Boot3 中 MyBatis 的 association 标签用法
- js异步操作 Promise fetch API 带来的网络请求变革—仙盟创梦IDE
- HTTP状态码超详细说明_http 状态码有哪些
- 聊聊跨域的原理与解决方法_跨域解决方案及原理
- 告别懵圈!产品新人的接口文档轻松入门指南
- 在Javaweb中实现发送简单邮件_java web发布
- 优化必备基础:Oracle中常见的三种表连接方式
- Oracle常用工具使用 - AWR_oracle工具有哪些
- 搭载USB 3.1接口:msi 微星 发布 990FXA Gaming 游戏主板
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)