ggplot中按比例大小的符号

geo*_*ory 7 r ggplot2

使用ggplot绘制比例区域符号似乎需要使用sqrt()才能实现真正的比例:

require(ggplot2)

t <- data.frame(x=rep(c(1:5),5), y=rep(c(1:5),each=5), s=round(seq(1,100,length.out=25)))
t
p <- ggplot(data=t, aes(x=x,y=y))

# direct size-to-variable mapping
p + geom_point(aes(size=s), pch=22, fill='#0000FF75', col=NA) +
  scale_size(range = c(1, 40)) +
  geom_text(data=t, aes(x=x,y=y,label=s),size=3,vjust=1)

# proportional area size-to-variable mapping
p + geom_point(aes(size=sqrt(s)), pch=22, fill='#0000FF75', col=NA) +
  scale_size(range = c(1, 40)) +
  geom_text(data=t, aes(x=x,y=y,label=s),size=3,vjust=1)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

正如您所看到的那样,当我需要标签显示原始数据时,这些标签是根的.尝试过使用scale_size选项但没有任何效果.任何人都知道修复此问题,或者是否可能有一个模糊的设置来实现比例区域大小映射?

提前致谢.

And*_*rie 7

您可以使用scale_area而不是scale_size:

p + geom_point(aes(size=s), pch=22, fill='#0000FF75', col=NA) +
  scale_area(range = c(1, 40)) +
  geom_text(data=t, aes(x=x,y=y,label=s),size=3,vjust=1)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


我同意,这并不完全是显而易见的,但也不是那么晦涩 - scale_area在帮助中有一个例子?scale_size.