首页 > 解决方案 > 如何绘制具有变量给定半径的散点图?

问题描述

我对ggplot很陌生,我需要制作一个大小与df的变量成比例的散点图,这样一些点就会得到“零半径”,因为变量中的值为0,但是当我使用大小时aes,具有 0 值的点映射到非零半径点。

我怎样才能得到想要的效果?

标签: rggplot2

解决方案


根据帮助,“scale_size_area确保将 0 的值映射到 0 的大小”。scale_radius[另外值得注意的是,如果使用orscale_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()

推荐阅读