我们上篇文章介绍的是ggplot2中的theme函数,主要用于调整图片主题,简单来说就是调整图中一些元素的大小,字体,颜色等等,图中展示的内容是不会改变的。
而今天介绍的scale函数则是用来调整图中的内容范围。引用王敏杰老师的话“标度(scale)是用于调整数据映射的图形属性。”
可能我这么说还是显得比较模糊,那就先举个例子:
p=ggplot(mtcars,aes(mpg,disp))+geom_point()
p+scale_x_continuous(“MPG”,breaks = c(15,25,35))
看到这个结果,大家也许会觉得上图到下图不也可以用xlab和xlim函数吗,确实是这样的,但Wickham大佬在最初设计时保留了scale函数,为了方便才出现了xlab,xlim,同时在默认的情况下,R会根据数据范围画出很好看的图,所以scale函数就被省略了,以至于很多人都不知道,也不会使用scale函数。
好的,我们开始今天的内容。首先来看看scale有哪些类型吧~
看到上图大家是不是有种似曾相识的感觉,特别是见到color, size, fill。是的,比如我们在用ggplot2画散点时,经常用color, size, fill等映射到点上,不同的颜色代表不同的分组,不同的点大小代表值的大小等等,然后会生成一个图例。而这个scale函数就是用来调整这些颜色,大小同时修改legend。
这个函数的基本构成是:
scale_映射类型_数据类型()
映射类型:xy轴,size, color(边框颜色), fill(填充颜色), shape, alpha, linetype.
数据类型:连续型,分散型,自定义,同一型。
接下来,用几个常用的函数来展示一下它的功能。
1.x轴修改(scale_x_continuous)
p+scale_x_continuous(“MPG”,breaks = c(15,25,35),
labels = c(“a”,“b”,“c”),position = “top”)
#x轴名改为“MPG”,x轴设置15,25,35三个刻度,并改名为“a”,“b”,“c”,同时把坐标轴放在图的上方。
2.修改颜色映射(scale_color_continuous)
p=ggplot(mtcars,aes(mpg,disp,color=cyl))+geom_point()
p+scale_color_continuous(“CYLCYL”,breaks = c(5,7),
labels = c(“a”,“b”),type = “viridis”)
#第一个位置“CYLCYL”设置为图例的名字,type为颜色设置,采用了viridis色带。
3.颜色自定义修改(适用于离散数据,scale_colour_manual)
p <- ggplot(mtcars, aes(mpg, wt)) +
geom_point(aes(colour = factor(cyl)),size=3)
p + scale_colour_manual(
values = c("#CD5B45","#E69F00","#0072B2"),
breaks = c(“4”, “6”, “8”),
labels = c(“a”, “b”, “c”),
name=“hahaha”)
#画图的时候将cyl设置为因子型。接下来scale_colour_manual函数把点的颜色自定义,然后是cyl的范围为4,6,8,标签为“a”,“b”,“c”,最后是图例名字的修改。
以上三个例子我认为是最常见的,如果能把scale和theme函数掌握,那想要调整图中的小细节就很容易了。其他scale相关的函数请参考wickham的《R for Data Science》。
好了,今天的分享就到这啦~
对R语言和森林生态感兴趣的同学请关注我的微信公众号哟~
参考资料:
《数据科学中的R语言》—— 王敏杰
《R for Data Science》—Hadley Wickham
CSDN