6. ggplot图层-after_stat()在做什么?

2022-09-08  本文已影响0人  心惊梦醒

  在增加一个layer之前,思考下每个layer的目的,一般来说,一个layer有三种目的:1)展示data,这一层几乎出现在所有图像上。2)展示data的statistical summary,通常在data的基础上绘制。3)添加额外的metadata:context, annotations和references,在background和foreground上都很有用:map(映射)经常用作background layer。
  scales控制从data到aesthetics的映射并提供解释plot的工具(如:axes和legends)。

a scale defines a mapping from the data space to the aesthetic space

  以下两行代码是等价的,对初学者来说,似乎有些难以理解:

ggplot(mpg, aes(x = displ)) + geom_histogram()
ggplot(mpg, aes(x = displ, y = after_stat(count))) + geom_histogram()
# ggplot(mpg,aes(x=displ,y=..count..)) + geom_histogram()
# ggplot(mpg,aes(x=displ,y=stat(count))) + geom_histogram()
# 最后两行是第二行的老版本,你可以在一些旧代码中看到

Every plot has two position scales, corresponding to the x and y aesthetics

 大部分的aesthetics直接使用data中的variables进行映射(例如ggplot(mpg,aes(x=cty,y=hwy,color=class))+geom_point()),但有时想在随后的渲染(即生成图像)过程中延迟map。ggplot2有三个时期的数据可用来做map(见??after_stat):

# 这个例子将最高的柱子scale成1
ggplot(mpg, aes(displ)) +
  geom_histogram(aes(y = after_stat(count / max(count))))
# 这个例子中,变量class映射到color(即scaled data),alpha()从scaled data中进一步scale,得到的值用于映射到fill
# alpha()是scale函数
ggplot(mpg, aes(class, hwy)) +
  geom_boxplot(aes(colour = class, fill = after_scale(alpha(colour, 0.4)))
上一篇下一篇

猜你喜欢

热点阅读