ggh4x包拓展ggplot2绘图

Introduction

官网:https://github.com/teunbrand/ggh4x/

ggh4x 包是 ggplot2 扩展包。它提供了一些实用函数,虽然这些函数并不完全符合“图形语法”的概念(它们可能有点hacky),但在调整ggplot绘图结果时仍然很有用。比如调整facet的大小、将多种美学映射到颜色以及指定facet的单独比例等等,下面介绍一些常用的功能:

可以从 CRAN 安装最新稳定版本的 ggh4x,如下所示:

install.packages("ggh4x")

或者可以使用以下命令从 GitHub 安装开发版本:

# install.packages("devtools")
devtools::install_github("teunbrand/ggh4x")

调整facets

扩展facets

facet_wrap2facet_grid2函数扩展了ggplot2的分面功能。即使当scales=“fixed”(默认)时,也可以使用axes参数在(部分或全部)内面绘制轴。此外,可以选择省略轴标签,但通过设置remove_labels参数保留内部面的轴刻度。

library(ggh4x)
library(scales)

p <- ggplot(mpg, aes(displ, hwy, colour = as.factor(cyl))) + geom_point() +
  labs(x = "Engine displacement", y = "Highway miles per gallon") +
  guides(colour = "none")

p + facet_wrap2(vars(class), axes = "all", remove_labels = "x")

此外,facet_grid2() 还支持该包所谓的“独立”尺度。这缓解了 ggplot2::facet_grid() 的限制,即比例只能在布局的行和列之间自由,而允许比例在布局的行和列内自由。这保留了网格布局,但保留了包裹面中尺度的灵活性。请注意,在下图中,每个面板的 x 轴都是独立的。

p + facet_grid2(vars(year), vars(drv), scales = "free_x", independent = "x")

嵌套facets

ggh4x这个包因生成嵌套面而闻名;其中,如果外strip属于同一类别,则它们可以跨越内strip。
如果分面存在一些层次关系,这可能特别有用。
在下面的示例中,根据叶子的长短对鸢尾花进行分类:

new_iris <- transform(
  iris, 
  Nester = ifelse(Species == "setosa", "Short Leaves", "Long Leaves")
)

iris_plot <- ggplot(new_iris, aes(Sepal.Width, Sepal.Length)) +
  geom_point()

iris_plot +
  facet_nested(~ Nester + Species, nest_line = element_line(linetype = 2)) +
  theme(strip.background = element_blank(),
        ggh4x.facet.nestline = element_line(colour = "blue"))

手动设计facets

为了实现对 ggplot2 方面的类似base-R的par(mar = c(2,2,1,1))控制级别,facet_manual() 被引入。与layout()函数一样,facet_manual()需要预先指定哪些面板放置在哪里。
这些被称为“手动”构面,因为它不会像网格和环绕构面那样根据可用数据动态生成布局。在上图中赋予layout()函数的矩阵现在可以用作手动方面的设计参数。

# Setting up a design for a layout
design <- matrix(c(1,2,3,2), 2, 2)
p + facet_manual(vars(factor(drv)), design = design)

或者更灵活的设计:

design <- "
  A##
  AB#
  #BC
  ##C
"
p + facet_manual(vars(drv), design = design)

细调strips

ggh4x提供了主题化的 strips。这些 strips 还允许你根据每个标签或每层图形设置 strip.text.*strip.background.* 的主题选项。background_x/y 和 <

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值