R 如何反转ggplot中的点大小?

R 如何反转ggplot中的点大小?,r,ggplot2,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)) 所以这不合适。一种解决方案是使用缩放大小()并设置自己的断点,然后在相反方向设置标签。更改了z值的范围以获得更好的表示 df=data.frame(x=rnorm(20),y=

请帮我解决这一点。我需要将正值表示为小点,将负值表示为大点。如果我在“大小”之前减去,则点大小是正确的,但图例正在更改:

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

所以这不合适。

一种解决方案是使用
缩放大小()
并设置自己的
断点
,然后在相反方向设置
标签
。更改了
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))

虽然这个问题已经很老了,而且有一个公认的答案,但巴普蒂斯特的评论建议使用
最后一个图()+比例大小(范围=c(5,1))+导向(大小=导向图例(反向=真))
非常优雅而简单。对于我需要产生与OP相同结果的数据,这项工作不需要修改。

晚了一点,但更简单的方法是将
trans='reverse'
添加到缩放大小

例如:

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')

试试
last_plot()+缩放大小(范围=c(5,1))+辅助线(大小=guide\u图例(反向=TRUE))
是一个更好的解决方案,它不需要你去摆弄美学、图例标题、打断和标签。