如何在ggplot中反转点大小?

O_D*_*yak 8 r ggplot2

请帮助我这一点.我需要将正值表示为小点,将负值表示为大点.如果我在尺寸之前减去胶带,则点尺寸正确,但图例正在改变:

df=data.frame(x=rnorm(20),y=runif(20),z=rnorm(20))
ggplot(df,aes(x=x,y=y))+geom_point(aes(size=-z))
Run Code Online (Sandbox Code Playgroud)

所以这不适合.

Did*_*rts 10

一种解决方案是使用scale_size()和设置自己的breaks,然后labels在相反的方向.更改z值范围以获得更好的表示.

df=data.frame(x=rnorm(20),y=runif(20),z=(-13:6))
ggplot(df,aes(x=x,y=y))+geom_point(aes(size=-z))+
  scale_size("New legend",breaks=c(-10,-5,0,5,10),labels=c(10,5,0,-5,-10))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


小智 8

有点晚了,但更简单的方法就是添加trans='reverse'到scale_size。

例子:

df=data.frame(x=rnorm(20),y=runif(20),z=z=(-13:6))
ggplot(df,aes(x=x,y=y))+
geom_point(aes(size=z)) +
scale_size(trans = 'reverse')
Run Code Online (Sandbox Code Playgroud)

具有相反尺寸比例的示例图