Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用ggside添加边际图形

使用ggside添加边际图形

作者头像
医学和生信笔记
发布于 2022-11-14 09:32:25
发布于 2022-11-14 09:32:25
54100
代码可运行
举报
运行总次数:0
代码可运行

Stay hungry, stay foolish!

ggside有点类似于ggExtra,是用来添加边际图形的,但是比ggExtra更加灵活。可以添加非常多的类型,在语法上也更加靠近ggplot2的写法。

aplot有时候可以做到,但是专门的事还是要给专门的包做!

“包治百病!

安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#CRAN
install.packages("ggside")
#Github
devtools::install_github("jtlandis/ggside")

基础使用

使用起来也是通过添加图层的方式。通过新提供的多种geom_xsidexxx()/geom_ysidexxx(),可以实现在x轴或者y轴添加各种不同的图形!

看下面这个例子,使用mpg数据集进行演示,先画一个散点图,横坐标是displ,纵坐标是hwy,都是连续型变量,通过class(离散型变量)映射不同的颜色。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(ggside)
## 载入需要的程辑包:ggplot2
## Registered S3 method overwritten by 'ggside':
##   method from   
##   +.gg   ggplot2

p <- ggplot(mpg, aes(displ, hwy, colour = class)) + 
  geom_point(size = 2) +
  theme_bw()

p

plot of chunk unnamed-chunk-2

现在我们想在散点图的上方添加一个箱线图,用以显示不同classdispl的分布情况;在散点图的左侧添加密度图,用来显示hwy这一个变量的分布。

ggExtra做不到,因为添加的边际图形两边都是一样的。aplot是可以做到的,但是有时候因为数据问题会出现显示不全。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
p + ggside(y.pos = "left")+ # 指定边际图形的位置
  geom_xsideboxplot(aes(y=class),orientation = "y")+ # orientation表示方向是水平还是垂直
  scale_xsidey_discrete()+
  geom_ysidedensity(aes(x = after_stat(density)), position = "stack")+
  theme(ggside.panel.scale = 0.3) # 调整边际图形的高度或宽度

plot of chunk unnamed-chunk-3

可以看到,上面这个图完美满足我们的需求。

下面有几个需要解释的地方。

首先是geom_xsideboxplot(aes(y=class),orientation = "y"),其中我们重新指定了y=class,因为最开始的图中,我们的横轴是displ,纵轴是hwy,现在我们要展示calss这个分类变量了,横坐标还是一样的,纵坐标需要换掉!

接下来的scale_xsidey_discrete(),因为重新指定了y轴的映射,所以强制变为离散型,这样才不会和最开始的连续性映射冲突。

以上就是ggside的基础用法。接下来看看其他用法。

进阶

目前支持非常多geom

  • GeomBar
  • GeomBoxplot
  • GeomDensity
  • GeomFreqpoly
  • GeomHistogram
  • GeomLine
  • GeomPath
  • GeomPoint
  • GeomText
  • GeomTile
  • GeomViolin

同时也支持分面操作哦!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(dplyr)
## 
## 载入程辑包:'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union

i2 <- iris %>%
  mutate(Species2 = rep(c("A","B"), 75))

p <- ggplot(i2, aes(Sepal.Width, Sepal.Length, color = Species)) +
  geom_point()+
  geom_xsidedensity(aes(y=stat(density))) +
  geom_ysidedensity(aes(x=stat(density))) +
  theme_bw()

p

plot of chunk unnamed-chunk-4

分面操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
p +  facet_wrap(Species~Species2) +
  labs(title = "FacetWrap") +
  guides(guide_axis(check.overlap = T))

plot of chunk unnamed-chunk-5

当然facet_grid()也是支持的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
p + facet_grid(Species~Species2, space = "free", scale = "free_y") 

plot of chunk unnamed-chunk-6

OK,以上就是ggside的基本用法,你们学废了吗?

以上就是今天的内容,希望对你有帮助哦!欢迎点赞、在看、关注、转发

欢迎在评论区留言或直接添加我的微信!

End

欢迎关注公众号:医学和生信笔记

医学和生信笔记 公众号主要分享:1.医学小知识、肛肠科小知识;2.R语言和Python相关的数据分析、可视化、机器学习等;3.生物信息学学习资料和自己的学习笔记!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 医学和生信笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
R可视乎|分面一页多图
双变量数据可视化可能对于我们比较简单, 但是如果变量是三个或者更多,怎么在一幅图一起显示呢?今天我们就来讨论这个问题,解决方案有两种。
庄闪闪
2021/04/09
1.6K0
主图注释怎么做?ggside来帮你!
ggside 包旨在使用户能够轻松地将metadata添加到他们的 ggplots 中。ggside对于一些复杂数据的处理优于patchwork。
作图丫
2022/03/29
6340
主图注释怎么做?ggside来帮你!
ggplot2拓展功能:局部放大和边际密度图
http://www.sthda.com/english/articles/32-r-graphics-essentials/131-plot-two-continuous-variables-scatter-graph-and-alternatives/
拴小林
2020/11/03
1.8K0
R语言图形拼接神器:Patchwork包入门指南
Patchwork 是一个非常流行的用于拼接 ggplot2 图形的包。它提供了一种类似四则运算的方法来拼接图形,非常易于使用,是拼接 ggplot2 图形的首选工具。
简说基因
2024/12/23
2550
R语言图形拼接神器:Patchwork包入门指南
免疫浸润结果可视化
在之前的推文中我们介绍了2行代码实现9种免疫浸润方法,今天给大家介绍下常见的免疫浸润结果的可视化。
医学和生信笔记
2023/08/30
1.3K0
免疫浸润结果可视化
【学习】ggplot2绘图入门系列之二:图层控制与直方图
如前文所述,ggplot2使用图层将各种图形元素逐步添加组合,从而形成最终结果。第一层必须是原始数据层,其中data参数控制数据来源,注意数据形式只能是数据框格式。aes参数控制了对哪些变量进行图形映射,以及映射方式,aes是Aesthetic的缩写。 下面我们来绘制一个直方图作为示例。数据集仍采取mpg,对hwy变量绘制直方图。首先加载了扩展包,然后用ggplot函数建立了第一层,hwy 数据映射到X轴上;使用+号增加了第二层,即直方图对象层。此时p被视为一种层对象,使用su
小莹莹
2018/04/18
7750
【学习】ggplot2绘图入门系列之二:图层控制与直方图
散点图添加边际图形
Stay hungry, stay foolish! 提供几个简单的函数扩展ggplot2的图形,可以给散点图添加边际图形。 有好多包可以直接实现这种效果,但是这个包比较纯粹,就只做这一件事。 安装 # 2选1 install.packages("ggExtra") install.packages("devtools") devtools::install_github("daattali/ggExtra") 使用 library("ggExtra") library("ggplot2")
医学和生信笔记
2022/11/14
4340
目前最全的R语言-图片的组合与拼接
李誉辉,四川大学硕士在读,研究数据分析与可视化,以及网络爬虫。誉辉兄最近出的文章都是很系统的,从R ggplot2的基础讲解到三维数据可视化plot3D,文章都整理讲解得很全面系统,我本人也是很喜欢这样的文章,故而推荐给大家。
生信宝典
2019/09/29
5.6K0
目前最全的R语言-图片的组合与拼接
30分钟学会ggplot2-散点图
标度负责控制映射后图形属性的显示方式。具体形式上来看是图例和坐标刻度。Scale和Mapping是紧密相关的概念。
黑妹的小屋
2020/08/06
9520
55-R可视化-4-ggplot2基石三部曲之基础一
这一个部分一共三篇,学会了基本上你的ggplot 就达到ggplot 界小学二年级的水平了吧~
北野茶缸子
2021/12/17
5500
55-R可视化-4-ggplot2基石三部曲之基础一
高阶可视化绘图系统:ggplot2入门
ggplot2是《The Grammar of Graphics》/《图形的语法》中提出了一套图形语法,将图形元素抽象成可以自由组合的要素,类似Photoshop中的图层累加,ggplot2将指定的元素/映射关系逐层叠加,最终形成所图形。更加深入学习ggplot2,请参考《ggplot2: 数据分析与图形艺术》。
1480
2019/07/22
1.7K0
高阶可视化绘图系统:ggplot2入门
ggplot2分面图形大改造
ggplot2的默认分面功能功能不够强大,支持的自定义参数也比较少,今天介绍的这个包可以对分面进行超多改头换面的操作!
医学和生信笔记
2022/11/15
1.1K0
ggplot2分面图形大改造
生信技能树七天学习小组 Day4笔记——R语言基础
因为之前自己已经学习过R语言基础的一些内容,包括:数据类型与数据结构、函数与R包、R语言作图基础等,今天的学习内容主要是《R数据科学》这本书的第一章——使用ggplot2进行数据可视化。
可乐同学与生信死磕到底
2024/03/25
3871
ggplot2 3.3.0版本更新内容
原来ggplot只有两种scale的类型,即continuous和discrete,在新版本中加了一种新的类型,可以将连续型的数据根据bin变成离散型的。如下所示:
生信编程日常
2020/04/01
7490
ggplot2 3.3.0版本更新内容
ggplot2绘图(R_03)
画图的思维:1.我的数据适合什么样的图?2.搜画图代码 3.仿制示例数据 4.套代码,调细节
用户10803254
2023/10/23
2710
全网最全的R语言基础图形合集
直方图是一种对数据分布情况进行可视化的图形,它是二维统计图表,对应两个坐标分别是统计样本以及该样本对应的某个属性如频率等度量。
生信学习者
2024/06/12
1000
全网最全的R语言基础图形合集
跟我一起ggplot2(1)
ggplot2 R的作图工具包,可以使用非常简单的语句实现非常复杂漂亮的效果。 qplot 加载qplot library(ggplot2) # 测试数据集,ggplot2内置的钻石数据 qplot(carat, price, data = diamonds) dsmall <- diamonds[sample(nrow(diamonds), 100), ] #对diamonds数据集进行抽样 #1. 按color,size,shape的基本分类可视化      #1.1 简单的散点图(利用color分
cloudskyme
2018/03/20
2.2K0
跟我一起ggplot2(1)
阿榜的生信笔记6-R作图
哈喽,我是学习生物信息学的阿榜!非常感谢您能够点击进来查看我的笔记。我致力于通过笔记,将生物信息学知识分享给更多的人。如果有任何纰漏或谬误,欢迎指正。让我们一起加油,一起学习进步鸭? 这份思维导图可以
用户10480134
2023/04/30
5980
ggplot2|详解八大基本绘图要素
ggplot2是由Hadley Wickham创建的一个十分强大的可视化R包。按照ggplot2的绘图理念,Plot(图)= data(数据集)+ Aesthetics(美学映射)+ Geometry(几何对象)。本文将从ggplot2的八大基本要素逐步介绍这个强大的R可视化包。
生信补给站
2020/08/05
7.2K0
ggplot2|详解八大基本绘图要素
ggplot2绘图
ggplot2 包提供了一个基于全面而连贯的语法的绘图系统。它弥补了 R 中创建图形缺乏一致性的缺点,使得用户可以创建有创新性的、新颖的图形类型。ggplot2 是 R 语言绘图一个重要特性和优势。通过 ggplot2,只需少量的代码,就可以绘制出高质量的图形,满足出版需要。ggplot2 语法简介,逻辑清晰,功能强大,可以快速上手。在 R 语言中自成一派,目前也有越来越多的绘图包基于 ggplot2 进行二次开发,一般都是以“gg”开头,例如 ggpubr,ggtree,ggvis,ggtree,ggstatsplot 等。
生信喵实验柴
2022/10/25
7680
相关推荐
R可视乎|分面一页多图
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验