感谢关注天善智能,走好数据之路↑↑↑
欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答、求职一站式搞定!
对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴趣的同学加微信:tstoutiao,邀请你进入数据爱好者交流群,数据爱好者们都在这儿。
作者:李誉辉
四川大学在读研究生
往期连载:
R_ggplot2基础(一)
R_ggplot2基础(二)
7 scale_xxx()
标度调整
标度用于控制变量映射到视觉对象的具体细节,如坐标轴标签和图例
视觉对象分为:
坐标轴,alpha透明度,color/fill颜色,date/time时间轴, hue色相, grey灰度,
shape点形, size尺寸, linetype线型, radius半径, area面积
它们都有相应的标度函数
分为简单函数和复合函数,复合函数内包含简单函数,简单函数如下:
![3901436-e2bc41a203b1a45d](https://i-blog.csdnimg.cn/blog_migrate/6af1eafd8c90b6c913db3317f5ed0b1c.webp?x-image-process=image/format,png)
(点击放大)
复合标度函数:
除去默认的8个系统默认的标度scale_xxx_identity()
,软件默认的一般用不上,用得上就不需要改了, 这8个分别是:
scale_color_identity()
, scale_fill_identity()
, scale_shape_identity()
, scale_linetype_identity()
,scale_alpha_identity()
, scale_size_identity()
, scale_discrete_identity()
, scale_continuous_identity()
还有一个手动处理任意离散变量的标度函数scale_discrete_manual(),其增加了1个映射参数,如aesthetics = c("color", "fill")
现在还剩下11组标度函数,分类如下:
![3901436-a5b7deeaecec7736](https://i-blog.csdnimg.cn/blog_migrate/dca88482e23cbb5ac26456bf47ff5150.webp?x-image-process=image/format,png)
![3901436-a983bf6667187c84](https://i-blog.csdnimg.cn/blog_migrate/71921c721780fef54ad573769177303c.webp?x-image-process=image/format,png)
![3901436-1b4aebfb801f6482](https://i-blog.csdnimg.cn/blog_migrate/0374d43cfd96e924b68f1c53df6c0050.webp?x-image-process=image/format,png)
![3901436-049388005b1561b8](https://i-blog.csdnimg.cn/blog_migrate/c37920a3aba080c46e945b67e5a1e5e5.webp?x-image-process=image/format,png)
(点击放大)
7.1 坐标轴标度与scales包
![3901436-e18a00cbb6e453c5](https://i-blog.csdnimg.cn/blog_migrate/b1d4dc1b5958f7321fdf27aee913456f.webp?x-image-process=image/format,png)
(点击放大)
参数解释:
* name 表示指定坐标轴名称,也将作为对应的图例名称
* breaks 表示指定坐标轴刻度位置,即粗网格线位置
* labels 表示指定坐标轴刻度标签内容
* limits 表示指定坐标轴显示范围,支持反区间
* expand 表示扩展坐标轴显示范围,不能缩小
* trans 表示指定坐标轴变换函数,自带有“asn”,“atanh”,“boxcox”,“exp”,“identity”,“log”,“log10”,“log1p”,“log2”,“logit”,“probability”,“probit”,“reciprocal”。
还支持scales包内的其它变换函数,如scales::percent()
百分比刻度,自定义scales::trans_new()
* position 表示指定坐标轴显示位置,x轴为“left”和“right”, y轴为“top”和“bottom”
* minor_breaks 表示指定细网格线对应位置,细网线没有标签对应,没有labels参数
* sec.axis 表示是否开启次坐标轴
例:
library(ggplot2)p1 <- ggplot(mpg, aes(displ, hwy)) + geom_point()p1 p1 + scale_x_continuous(name = "发动机排量/L", limits = c(2,6), breaks = c(2, 4, 6), labels = c("two", "four", "six"), minor_breaks = c(3, 5)) + # 重新指定坐标轴名称, 只显示区间(2, 6)范围的元素, 更改坐标轴刻度和标签 scale_y_continuous(name = "高速公路油耗" ) # 重新指定坐标轴名称set.seed(14)df <- data.frame( x = rnorm(10) * 100000, y = seq(0, 1, length.out = 10))p2 <- ggplot(df, aes(x, y)) + geom_point(shape=21, color = "purple", fill = "cyan", size = 5) p2 + scale_y_continuous(labels = scales::percent) # y轴百分号显示p2 + scale_x_continuous(labels = scales::comma) + # 数字逗号分割,每3位数增加1个逗号 scale_y_continuous(labels = scales::dollar) # y轴美元单位显示
![3901436-61ce3f490020ce4a](https://i-blog.csdnimg.cn/blog_migrate/aad9961a965777081470f597c172bc31.webp?x-image-process=image/format,png)