📅  最后修改于: 2023-12-03 14:51:07.878000             🧑  作者: Mango
当我们在使用 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()
函数来设置轴中断。在实际应用中,轴中断可以帮助我们更好地展示数据的细节,更加清晰地传达数据中的信息。