ggplot2-用图层构建图像2

图层属性映射

aes()函数用来将数据变量映射到图形或aesthetics中
aes()函数里有一系列的图形属性参数

aes(x = displ, y = hwy, color = class)

这里将x坐标映射到displ,y坐标映射到hwy,颜色映射到class,其中前两个参数可以省略名字,他们会自动匹配到x和y轴

aes(displ, hwy, color = class)

尽管可以用aes()处理数据,如aes(log(carat), log(price)),但是最好仅作一些简单的计算
将复杂的转换转移到aes()调用的外面,并转入dplyr::mutate()调用
这样很容易检查拼写并加快计算速度,因为此时仅作了一次转换,而不是每次画图的时候都转换

不要在aes()中涉及带有$的变量 diamonds$carat,它可以破坏代码,以至于图不再包括之前需要的元素,并且,如果ggplot2改变行的顺序,这会和分面一样引起问题

1. 在图和图层中指定图形属性

在个别的图层中或在某些两者的结合部分,图层属性映射可在最初的ggplot()调用中提供。以下所有调用创建出相同效果的图

ggplot(mpg, aes(displ, hwy, color = class)) +
	geom_point()
	
ggplot(mpg, aes(displ, hwy)) +
	geom_point(aes(color = class))
	
ggplot(mpg, aes(displ)) +
	geom_point(aes(y = hwy, color = class))
	
ggplot(mpg) +
	geom_point(aes(displ, hwy, color = class))

在这里插入图片描述

在每一层内,可以添加、修改或删除默认映射

操作图层图形属性结果
添加aes(color = cyl)aes(mpg, wt, color = cyl)
修改aes(y = disp)aes(mpg, disp)
删除aes(y = NULL)aes(mpg)

如果图中仅有一个图层,那么对你指定图形属性的方式没有什么影响
但是,如果要加一个额外图层的话,就会有很大的区别

ggplot(mpg, aes(displ, hwy, color = class)) +
	geom_point() +
	geom_smooth(method = "lm", se = FALSE) +
	theme(legend.position = "none")

ggplot(mpg, aes(displ, hwy)) +
	geom_point(aes(color = class)) +
	geom_smooth(method = "lm", se = FALSE) +
	theme(legend.position = "none")

在这里插入图片描述

在这里插入图片描述

2. 设定和映射

除了可以将一个图形属性映射到一个变量,也可以在图层的参数里将其设定为一个单一值。将图层属性映射到一个变量中(如,aes(color = cut)),或把它设定到一个常数中(如,color = “red”)。如果想用变量控制图形属性的话,将规则写入aes()中;如果想修改默认尺寸或颜色,将值写在aes()外面

尽管下面的代码相似,但是输出却有所不同。第二个图将颜色映射(不是设置)到“darkblue”。实际上是先创建了一个包含值为“darkblue”字符的变量,然后将color映射到这个新变量。因为这个新变量的值是离散型的,但是默认的颜色标度将用色轮上等间距的颜色,并且此处新变量只有一个值,因此这个颜色就是桃红色

ggplot(mpg, aes(cty, hwy)) +
	geom_point(color = "darkblue")

ggplot(mpg, aes(cty, hwy)) +
	geom_point(aes(color = "darkblue"))

在这里插入图片描述

在这里插入图片描述

第三个方法是映射到值,并覆盖默认的标度

ggplot(mpg, aes(cty, hwy)) +
	geom_point(aes(color = "darkblue")) +
	scale_color_identity()

在这里插入图片描述

有时将图层属性属性映射到常量是很有用的。例如,如果想用变化的参数展示多图层,可以“命名”每个图层

ggplot(mpg, aes(displ, hwy)) +
	geom_point() +
	geom_smooth(aes(color = "loess"), method = "loess", se = FALSE) +
	geom_smooth(aes(color = "lm"), method = "lm", se = FALSE) +
	labs(color = "Method")

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值