📜  在 R 中设置 ggplot2 绘图的轴中断(1)

📅  最后修改于: 2023-12-03 14:51:07.878000             🧑  作者: Mango

在 R 中设置 ggplot2 绘图的轴中断

当我们在使用 ggplot2 进行绘图时,有时会遇到数据范围极大但又需要同时将细节展示出来的情况,此时就可以使用轴中断的方式进行展示。本文将介绍在 ggplot2 中如何设置轴中断。

准备数据

首先,我们需要准备一些数据来进行绘图。这里我们以 diamonds 数据集为例。首先加载 ggplot2 和 diamonds 数据集:

library(ggplot2)

data(diamonds)

我们可以通过如下代码查看 diamonds 数据集的结构:

str(diamonds)

输出结果:

tibble [53,940 x 10] (S3: tbl_df/tbl/data.frame)
 $ carat  : num [1:53940] 0.23 0.21 0.23 0.29 0.31 0.24 0.24 0.26 0.22 0.23 ...
 $ cut    : Ord.factor w/ 5 levels "Fair"<"Good"<..: 5 4 2 4 2 3 3 3 1 3 ...
 $ color  : Ord.factor w/ 7 levels "D"<"E"<"F"<"G"<..: 2 2 2 6 7 7 6 5 2 5 ...
 $ clarity: Ord.factor w/ 8 levels "I1"<"SI2"<"SI1"<..: 2 3 5 4 2 6 7 3 4 5 ...
 $ depth  : num [1:53940] 61.5 59.8 56.9 62.4 63.3 62.8 62.3 61.9 65.1 59.4 ...
 $ table  : num [1:53940] 55 61 65 58 58 57 57 55 61 61 ...
 $ price  : int [1:53940] 326 326 327 334 335 336 336 337 337 338 ...
 $ x      : num [1:53940] 3.95 3.89 4.05 4.2 4.34 3.94 3.95 4.07 3.87 4 ...
 $ y      : num [1:53940] 3.98 3.84 4.07 4.23 4.35 3.96 3.98 4.11 3.78 4.05 ...
 $ z      : num [1:53940] 2.43 2.31 2.31 2.63 2.75 2.48 2.47 2.53 2.49 2.39 ...

我们可以看到 diamonds 数据集包含了 10 个变量,共有 53940 个样本。

绘制基础图形

在开始绘制轴中断的图形之前,我们先来看一下如何绘制基础的散点图。

我们可以使用如下代码绘制钻石价格与克拉数之间的散点图:

ggplot(data = diamonds, aes(x = carat, y = price)) +
  geom_point(alpha = 0.5)

输出结果:

基础散点图

设置轴中断

现在我们来设置图形的轴中断。假设我们希望在纵坐标上设置轴中断,我们可以使用 scale_y_continuous() 函数来设置中断点。例如:我们希望将纵坐标在 15000 到 20000 之间的部分去掉,我们可以使用如下代码:

ggplot(data = diamonds, aes(x = carat, y = price)) +
  geom_point(alpha = 0.5) +
  scale_y_continuous(limits = c(0, 15000),
                     expand = c(0, 0)) +
  scale_y_continuous(limits = c(20000, 200000),
                     trans = "reverse",
                     expand = c(0, 0))

输出结果:

轴中断图

我们可以看到,此时纵坐标在 15000 到 20000 之间的部分被去掉了,而在 20000 到 200000 之间的部分则采用了 trans = "reverse" 反转纵坐标,并且使用了 expand = c(0, 0) 来避免中断处出现不必要的留白。

结语

通过本文,我们学习了如何在 ggplot2 中使用 scale_y_continuous() 函数来设置轴中断。在实际应用中,轴中断可以帮助我们更好地展示数据的细节,更加清晰地传达数据中的信息。