我是ggplot的新手,我需要制作一个散点图,其大小与df的变量成比例,因此某些点会获得“零半径”,因为变量中的值为0,但是当我使用aes大小,将值为0的点映射到非零半径点。
我如何获得理想的效果?
答案 0 :(得分:0)
根据帮助,“ scale_size_area
确保将值0映射为大小0”。 [同样值得注意的是,如果使用scale_radius
或scale_size
,并且将range
参数的下限设置为零,则可以获得类似的效果]。因此,我们可以这样做:
df <- data.frame(x=0:5, y=0:5, s=0:5)
ggplot(df, aes(x=x, y=y)) +
geom_point(aes(size=s)) +
scale_size_area() # NB scale_size(range = c(0, 6)) also works
请注意,这仍然使用单个像素显示“零尺寸”点的位置。如果您希望它们实际上是不可见的,则可以过滤出大小为零的行,如下所示:
ggplot(df, aes(x=x, y=y, size=s)) +
geom_point(data = df[df$s != 0,]) +
scale_size_area()