首页 > 其他分享 >R语言可视化学习笔记之ggridges包

R语言可视化学习笔记之ggridges包

时间:2023-05-02 22:33:17浏览次数:48  
标签:scale density ## 笔记 可视化 ridges geom ggridges fill


作者:严涛浙江大学作物遗传育种在读研究生(生物信息学方向)伪码农,R语言爱好者,爱开源。

严涛老师的绘图教程还有:

gganimate |诺奖文章里面的动图布局教程来了!!

ggplot2学习笔记之图形排列

R包ggseqlogo |置换序列分析图

ggplot2高效实用指南(可视化脚本,工具,套路,配色)

简介

ggridges。主要包用来绘制山峦图产品尤其的英文针对时间或者空间分布****可视化。具有十分好的效果ggridges主要提供两个几何图像函数:

  • geom_ridgeline():主要放置山脊线图
  • geom_density_ridges():主要布局密度山脊线图

具体用法可以参考官方文档:

https://cran.r-project.org/web/packages/ggridges/vignettes/introduction.html

geom_ridgeline()

library(ggridges)
library(tidyverse)
# grid.arrange来自于gridExtra包,可以同时拼图多个ggplot2对象
library(gridExtra)


my_data <- data.frame(x=1:5, y=rep(1,5), height=c(0,1,-1,3,2))
plot_base <- ggplot(my_data, aes(x, y, height=height))

# 默认负值不显示,除非指定min_height参数

grid.arrange(plot_base+geom_ridgeline(),
             plot_base+geom_ridgeline(min_height=-2), ncol=2)

R语言可视化学习笔记之ggridges包_html

geom_density_ridges()

geom_density_ridges()函数首先会根据数据计算密度然后绘制,此时美学映射height没有必要编写函数中。下面使用lincoln_weather数据集。

# creates a vector of n equally spaced colors along the
# Matplolib 'viridis' color map

# also designed to be perceived by readers with the most common form of color blindness
#  scale_fill_viridis函数来源于此包,
# 其参数 option用于设置颜色 "magma" (or "A"), "inferno" (or "B"), "plasma" (or "C"),
and "viridis" (or "D", the default option).
# ?viridis可以查看其具体含义

library(viridis)
head(lincoln_weather[ ,1:4])


## # A tibble: 6 x 4
##   CST      `Max Temperature [F]` `Mean Temperature [F]` `Min Temperature ~
##   <chr>                    <int>                  <int>              <int>
## 1 2016-1-1                    37                     24                 11
## 2 2016-1-2                    41                     23                  5
## 3 2016-1-3                    37                     23                  8
## 4 2016-1-4                    30                     17                  4
## 5 2016-1-5                    38                     29                 19
## 6 2016-1-6                    34                     33                 32

# x后的值用 ` (反引号)括起,是因为列名字中存在空格和特殊字符,需要特殊对待
# fill = ..x.., double dots是ggplot2的一种特殊识别符,用来区分定义的和计算的美学参数
# 这里指用横轴的数据着色

ggplot(lincoln_weather, aes(x=`Mean Temperature [F]`, y=`Month`, fill=..x..))+
  geom_density_ridges_gradient(scale=3, rel_min_height=0.01, gradient_lwd = 1.)+
  scale_x_continuous(expand = c(0.01, 0))+ # 扩展下横轴和纵轴
  scale_y_discrete(expand = c(0.01,0))+
  scale_fill_viridis(name="Temp. [F]", option = "C")+
  labs(title="Temperature in Lincoln NE",
       subtitle="Mean temperature (Fahrenheit) by month for 2016\nData:Orogin CSV from the Weather Underground ")+
  theme_ridges(font_size = 13, grid = FALSE)+
  theme(axis.title.y = element_blank())

R语言可视化学习笔记之ggridges包_图例_02

环尺度

为了使ggridges 重新呈现的图形可视化效果最好,同时为了减少用户对颜色设置的困难,作者提供了循环比例尺作为颜色轮转映射。

ggplot(diamonds, aes(x=price, y=cut, fill=cut))+
  geom_density_ridges(scale=4)+
  scale_fill_cyclical(values = c("blue", "green"))+
  theme_ridges(grid = FALSE)

R语言可视化学习笔记之ggridges包_可视化_03

默认的,周期性尺度为了防止误解是不安排图例的,但是可以通过选项guide="legend"添加图例。

ggplot(diamonds, aes(x=price, y=cut, fill=cut))+
  geom_density_ridges(scale=4)+
  scale_fill_cyclical(values = c("blue", "green"), guide="legend",
                      labels=c("Fair"="blue", "Good"="green"),
                      name="Fill colors")+
  theme_ridges(grid = FALSE)

R语言可视化学习笔记之ggridges包_图例_04

ggplot2一样,图例是可以修改的,其他参数尺寸大小,宽度,形状等都是可以通过循环刻度进行修改。

ggplot(diamonds, aes(x=price, y=cut, fill=cut))+
  geom_density_ridges(scale=4)+
  scale_fill_cyclical(values = c("blue", "green"), guide="legend")+
  theme_ridges(grid = FALSE)

R语言可视化学习笔记之ggridges包_可视化_05

再来2个示例

不做解释了,如果想重现就把代码拆解开,按需修改。一句句话单独拆开运行,理解其操作内容。

library(dplyr)
library(forcats)
Catalan_elections %>%
  mutate(YearFct = fct_rev(as.factor(Year))) %>%
  ggplot(aes(y = YearFct)) +
  geom_density_ridges(
    aes(x = Percent, fill = paste(YearFct, Option)),
    alpha = .8, color = "white", from = 0, to = 100
  ) +
  labs(
    x = "Vote (%)",
    y = "Election Year",
    title = "Indy vs Unionist vote in Catalan elections",
    subtitle = "Analysis unit: municipalities (n = 949)",
    caption = "Marc Belzunces (@marcbeldata) | Source: Idescat"
  ) +
  scale_y_discrete(expand = c(0.01, 0)) +
  scale_x_continuous(expand = c(0.01, 0)) +
  scale_fill_cyclical(
    breaks = c("1980 Indy", "1980 Unionist"),
    labels = c(`1980 Indy` = "Indy", `1980 Unionist` = "Unionist"),
    values = c("#ff0000", "#0000ff", "#ff8080", "#8080ff"),
    name = "Option", guide = "legend"
  ) +
  theme_ridges(grid = FALSE)

R语言可视化学习笔记之ggridges包_html_06

library(DAAG) # for ais dataset
ais$sport <- factor(
  ais$sport,
  levels = c("B_Ball", "Field", "Gym", "Netball", "Row", "Swim", "T_400m", "T_Sprnt", "Tennis", "W_Polo"),
  labels = c("Basketball", "Field", "Gym", "Netball", "Row", "Swim", "Track 400m", "Track Sprint", "Tennis", "Water Polo")
)

ggplot(ais, aes(x=ht, y=sport, color=sex, point_color=sex, fill=sex)) +
  geom_density_ridges(
    jittered_points=TRUE, scale = .95, rel_min_height = .01,
    point_shape = "|", point_size = 3, size = 0.25,
    position = position_points_jitter(height = 0)
  ) +
  scale_y_discrete(expand = c(.01, 0)) +
  scale_x_continuous(expand = c(0, 0), name = "height [cm]") +
  scale_fill_manual(values = c("#D55E0050", "#0072B250"), labels = c("female", "male")) +
  scale_color_manual(values = c("#D55E00", "#0072B2"), guide = "none") +
  scale_discrete_manual("point_color", values = c("#D55E00", "#0072B2"), guide = "none") +
  guides(fill = guide_legend(
    override.aes = list(
      fill = c("#D55E00A0", "#0072B2A0"),
      color = NA, point_color = NA))
  ) +
  ggtitle("Height in Australian athletes") +
  theme_ridges(center = TRUE)

R语言可视化学习笔记之ggridges包_html_07

还有很多用法有兴趣的可以查看官方文档https://cran.r-project.org/web/packages/ggridges/vignettes/introduction.html和https://cran.r-project.org/web/packages /ggridges/vignettes/gallery.html)继续学习。

那你知道单细胞基因表达中这个图怎么画了吗?

R语言可视化学习笔记之ggridges包_数据_08


标签:scale,density,##,笔记,可视化,ridges,geom,ggridges,fill
From: https://blog.51cto.com/u_16077014/6240320

相关文章

  • 《深入理解计算机系统》第七章学习笔记 链接
    链接是将各种代码和数据片段收集并组合成为一个单一文件的过程,这个文件可被加载到内存并执行。链接可以执行于编译时,也就是在源代码被翻译成机器代码时;也可以执行于加载时,也就是在程序被加载器加载到内存并执行时;甚至执行于运行时,也就是由应用程序来执行。在早期计算机系统中,链接......
  • 吉老师线段树学习笔记(内含吉老师ppt)
    Segmenttreebeats吉老师线段树SegmenttreeBeats!.pdf_免费高速下载|百度网盘-分享无限制(baidu.com)为广大oier们提供学习ppt(笑)历史最大值未完工作用用于维护区间最值和区间历史最值的线段树区间最值引入问题给定一个长度为n的数列A,有m次操作:1.将区间\([l,r]\)里......
  • 树分治学习笔记
    前言既然序列可以分治,那么树也可以分治。树上的分治可以分为点分治与边分治。点分治边分治主要用于处理树上路径问题。考虑一个分治的过程:选中一棵树的根,计算经过根的路径的贡献,然后以其子结点为根对子树递归地计算贡献。容易发现,在构造数据下这种算法的复杂度是可以达到\(O(......
  • 平衡树学习笔记
    前置芝士平衡树的前置芝士:全局平衡二叉树。平衡树平衡树是一种基于二叉搜索树的数据结构。满足:左儿子\(<\)根\(<\)右儿子。也就是一切小于根节点的在左边,一切大于根节点的在右边。这样想要查找一个节点的位置时间复杂度就是\(O(\logn)\)。平衡树主要有三种:Splay,Trea......
  • echarts数据可视化-动态柱状图
    效果如下:此处用的echarts柱状图为:AxisAlignwithTick本文的要讨论的内容:1、柱状图样式修改2、多数据的缩放展示柱状图样式修改//数据constcity=reactive([{value:335,name:'长沙'},{value:310,name:'武汉'},{value:274,name:'岳阳'}......
  • 《重构:改善既有代码的设计》学习笔记
    代码的坏味道名称说明重构手法神秘命名MysteriousName好的命名能够节省时间改变函数神秘、变量改名、字段改名重复代码DuplicatedName重复代码让人不得不留意其中的细微差异提炼函数、移动语句、函数上移过长函数LongFunction函数越长,就越难理解提炼函......
  • 点分治学习笔记
    点分治序列上的操作可以用很多方式维护,线段树树状数组平衡树啥的,但是如果毒瘤出题人把序列搬到了树上,则需要一些奇妙方法。一般有两种(好几种?)方法:树链剖分,把树上路径转化成dfn序上的多段进行操作。LCT,不多说,目前只会板子,没搞太懂。点分治,这个是不用把树转化成序列的,而是将树......
  • Qt 学习笔记
     1.  *newClass 与引用<qpushbutton.cpp>:QPushButton::QPushButton(QWidget*parent):QAbstractButton(*newQPushButtonPrivate,parent){Q_D(QPushButton);d->init();}<qabstractbutton.cpp>:/*!\internal*/对应的函数原型......
  • IT工具知识-18: ADB操作笔记(自用)
    Linux下的常用命令(持续更新)终端使用bashshell查询安卓设备当前活动的APP包名和活动窗口名adbshelldumpsyswindowwindows|grep-E'mCurrentFocus|mFocusedApp'启动指定app下的指定窗口app包名和活动窗口名都要提供,否则无法启动adbshellamstart包名/活动窗口......
  • 四月读书笔记
    梦断代码这本书让我越发意识到作为软件开发者的不容易。程序员都怀揣着成就一番事业的心,他们信心满满,斗志昂扬,但因为种种私人原因不能够与其他程序员很好的合作,团队精神难以成型。作为乐观主义者,他们不畏惧任何困难,正因如此,才为计算机提供了无尽的可能目标要实际。实际这个词其实......