geom_rect and NULL

5

我一直在看ggplot2书中5.10章节的geom_rect示例,但不明白在aes函数中NULL的用途。举个例子,在使用mpg数据集时:

g = ggplot(data=mpg, aes(x=displ, y=hwy)) + geom_point()

#Produces a plot with a transparent filled region
g + geom_rect(aes(NULL, NULL), alpha=0.1,xmin=5, xmax=7, ymin=10,
ymax=45, fill="blue")

#Solid filled region (v0.9) or nothing in v0.8
g + geom_rect(alpha=0.1,xmin=5, xmax=7, ymin=10, ymax=45, fill="blue")

我理解的是,这些 NULL 值正在重置 x 和 y 的映射,但我不明白为什么这会影响透明度。


你的第二个例子对我来说根本没有产生矩形。但是,geom_rect 对我来说一直像巫术一样(我能够可靠地让它工作的唯一方法是始终将其自己的数据框传递给它)。 - joran
@joran:我正在使用ggplot v0.9。我没有想到会有什么区别,抱歉。无论如何,在第二个命令中的NULL是什么意思? - csgillespie
1
我的理解和你一样,即它重置了x和y的美学属性。但我也不知道为什么会影响alpha,抱歉。 - joran
规范的重要性在于,多个透明矩形叠放在一起会看起来很实心 - 因为您没有重置数据,所以每行mtcars都会得到一个矩形。您可能想使用annotate代替。 - hadley
@hadley: 这是否意味着所有的geom都有所有的美学属性,因为在geom_rect下没有列出x和y? 此外,您能否将您的评论作为答案,以便我可以接受您的答案。 - csgillespie
1个回答

1

我刚刚把Hadley的评论变成了社区维基答案

规范的重要性在于,堆叠在一起的多个透明矩形看起来是实心的 - 因为您没有重置数据,所以您会得到mtcars中每行一个矩形。您可能想使用annotate。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接