请帮我解决这个问题。我需要将正值表示为小点,将负值表示为大点。如果我在大小之前使用减号,则点大小是正确的,但图例正在改变:
df=data.frame(x=rnorm(20),y=runif(20),z=rnorm(20))
ggplot(df,aes(x=x,y=y))+geom_point(aes(size=-z))
所以不适合。
一种解决方案是使用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))
虽然这个问题非常古老 - 并且有一个公认的答案 - 来自 baptiste 的评论建议使用last_plot() + scale_size(range = c(5,1)) + guides(size = guide_legend(reverse=TRUE))
非常优雅和简单。对于我需要产生与 OP 相同结果的数据,这需要零修改。