从dataframe列设置时,ggplot2中alpha / size的不成比例差异?

时间:2013-03-29 16:37:57

标签: r ggplot2

我有这个散点图:

iris$size <- 2
ggplot(iris) + geom_point(aes(x=Sepal.Width, y=Sepal.Length, color=Species, size=size))

它工作正常。现在我只想使其中一个点稍微大于其他点,所以我这样做:

iris$size[3] <- 2.5
ggplot(iris) + geom_point(aes(x=Sepal.Width, y=Sepal.Length, color=Species, size=size))

这造成了不成比例的差异!点iris$size[3]不比其余点大20%,它更大(可能是10倍)。如果我只是将size=设置为aes()之外的某个常量(例如2.5),那么2.5的大小与预期相比看起来要大于2.0,但是当它在aes()内设置为数据框中的一列。

alpha=也是如此。如果我将alpha=设置为常量,而不是aes(),那么它可以正常工作,但是如果我将某些点设置为具有0.6的alpha且有几个具有{{1}的alpha值,差异被放大到非常大。

我该如何解决这个问题?如何在0.65内的列中解释字母/大小值,就像调用aes()时在其外部一样?感谢。

1 个答案:

答案 0 :(得分:3)

设置大小时,您的值会在预设范围之间分配 - 因为scale_size_continuous()默认范围是1到6.因此,数据中的最小值为size=1,最大值为{{1 }}。使用size=6和参数scale_size_continuous(),您可以获得自己的范围,例如,与原始数据中的范围相同。

range=

如果用于ggplot(iris) + geom_point(aes(x=Sepal.Width, y=Sepal.Length, color=Species, size=size))+ scale_size_continuous(range=c(2,2.5),breaks=c(2,2.5)) 的数据是您想要在地图上看到的实际尺寸值,则可以使用size=来直接解释scale_size_identity()size=指定的值

aes()