想要学习R数据可视化,师妹带你见识ggplot2之标度(二)






想要学习R数据可视化,师妹带你见识ggplot2之标度(二)

小师妹  生信果  2023-08-04 19:00:15

点击蓝字

关注我们

废话不多说,小师妹接下来继续讲述标度函数,小师妹还是使用ggplot2自带的数据集讲述示例,跟着小师妹的步伐继续学习吧。

一. 设置范围

在默认的情况下,超出范围的数据都会被设置为 NA 值,所以超出范围的数据都将会被删除,我们可以使用如下小师妹列举的三个函数来设置数据的范围。


xlim = c(min, max), ylim = c(min, max),xlim参数用于设置x轴的数据范围,ylim参数用于设置y轴的数据范围。这两个参数都可以接受一个包含最小值和最大值的向量作为输入,但是如果更大的值在前面,那么轴的数据将会反转。又到了小师妹举例的环节,示例如下:

> p4 <- ggplot(mtcars, aes(mpg, wt))> p4 + geom_point()
> p5 <- ggplot(mtcars, aes(mpg, wt)) ++ geom_point()> p5 + xlim(10, 30)
> p6 <- ggplot(mtcars, aes(mpg, wt)) ++ geom_point()> p6 + xlim(30, 10)

lims()函数是一个方便的函数,用于设置图形的数据范围。它可以一次性设置x轴和y轴的数据范围,使得只关注特定的数据区间,从而更好地展示数据的特征和趋势。我们可以使用lims()函数 在不同的图片中设置同样的配色方案。小师妹举例:

> small <- subset(mtcars, cyl == 4)> big <- subset(mtcars, cyl > 4)> p1 <- ggplot(small, aes(mpg, wt, colour = factor(cyl))) ++   geom_point() ++   lims(colour = c("4", "6", "8"))> p2 <- ggplot(big, aes(mpg, wt, colour = factor(cyl))) ++   geom_point() ++   lims(colour = c("4", "6", "8"))> plot_grid(p1, p2)

 注:plot_grid 函数可以将多张图片放在一起绘制,是cowplot包下的。

二. 设置值范围

expand_limits()函数用于扩展图形的数据范围,以确保所有数据点都能在图形中显示出来。它可以一次性设置x轴和y轴的数据范围,确保所有数据点都能在图形中完整地显示出来,从而更好地展示数据的特征和趋势,该函数接受一个命名列表,名称必须为图形属性。小师妹再举几个简单的例子帮大家理解。


我们先绘制一张散点图,如下。

> p <- ggplot(mtcars, aes(mpg, wt)) + geom_point()

接着我们来计算这张散点图的X 轴(mpg)和 Y 轴(wt)的数据范围,如下所示。

> library(magrittr)> mtcars %>% distinct(mpg) %>% summarise(min=min(.), max=max(.))min max1 10.4 33.9> mtcars %>% distinct(wt) %>% summarise(min=min(.), max=max(.))min max1 1.513 5.424

接下来我们就用 expand_limits 来试一下调整数据范围。

> p1 <- p + expand_limits(x = 0)> p2 <- p + expand_limits(y = c(2, 8))> p3 <- p + expand_limits(x = 0, y = 0)> plot_grid(p1, p2, p3, labels = c('a', 'b', 'c'), nrow = 1)

小师妹再对其颜色进行设置给大家看一下小师妹,如下所示。

> p1 <- ggplot(mtcars, aes(mpg, wt)) ++ geom_point(aes(colour = cyl)) ++ expand_limits(colour = seq(2, 8, by = 2))> p2 <- ggplot(mtcars, aes(mpg, wt)) ++ geom_point(aes(colour = factor(cyl))) ++ expand_limits(colour = factor(seq(2, 8, by = 2)))> plot_grid(p1, p2, labels = c('A', 'B'))

三. 设置间隔

expand()函数用于设置图形的轴范围的扩展情况。它可以控制轴范围的扩展,使得数据点不会紧贴在轴线上,而是留有一定的空间。使得数据点在图形中更好地展示出来,避免数据点与轴线重叠,提高图形的可读性,主要搭配 

scale_(x|y)_continuous 与 scale_(x|y)_discrete 使用。又到了小师妹的举例环节啦:

> p1 <- ggplot(mtcars) ++ geom_bar(aes(x = factor(cyl)))> p2 <- ggplot(mtcars) ++ geom_bar(aes(x = factor(cyl))) ++ scale_y_continuous(expand = expansion(mult = c(0, .1)))> p3 <- ggplot(subset(diamonds, carat > 2), aes(cut, clarity)) ++ geom_jitter() ++ scale_x_discrete(expand = expansion(add = 2))> p4 <- ggplot(subset(diamonds, carat > 2), aes(cut, price)) ++ geom_jitter() ++ scale_x_discrete(expand = expansion(add = .6)) ++ scale_y_continuous(expand = expansion(mult = .05))> plot_grid(p1, p2, p3, p4, labels = LETTERS[1:4],nrow = 2)

今天小师妹带大家又学习了很多关于标度函数的知识,希望小伙伴们慢慢消化吸收,小师妹接下来还会继续深入的讲解标度函数,小伙伴们要继续关注小师妹的文章哦,还有记得要关注小师妹的工具平台呀(http://www.biocloudservice.com/home.html),那今天小师妹的分享就到这里啦,再会啦。