我有这个散点图:
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()
时在其外部一样?感谢。
答案 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()