缩放geom_point()的大小以根据从零开始的距离来增加大小

时间:2018-12-19 02:38:12

标签: r ggplot2

我想绘制一些标准化为z分数的量度。我希望geom_point()中的点的大小从0增加到3,并且也从0增加到-3。我还希望颜色从红色变为蓝色。诀窍是让两者一起工作。

这里是一个尽可能接近我想要的示例,请注意,点的大小从-2增加,而我希望随着z_score远离零而增加点的大小

library(tidyverse)

year <- rep(c(2015:2018), each = 3)
parameters <- rep(c("length", "weight", "condition"), 4)
z_score <- runif(12, min = -2, max = 2)
df <- tibble(year, parameters, z_score)

cols <- c("#d73027",
          "darkgrey",
          "#4575b4")

ggplot(df, aes(year, parameters, colour = z_score, size = z_score)) +
  geom_point() +
  scale_colour_gradientn(colours = cols) +
  theme(legend.position="bottom") +
  scale_size(range = c(1,15)) +
  guides(color= guide_legend(), size=guide_legend())

bubble plot output

我尝试的一个技巧是使用z_score的绝对值来正确缩放点,但弄乱了图例。

这就是我想要的图例和磅值要缩放的内容,尽管我希望颜色如示例中那样是渐变的。任何见识将不胜感激!

Link to plot legend

1 个答案:

答案 0 :(得分:1)

您非常亲密。为了调整图例中点的大小,请使用guides函数中的override.aes选项。

library(ggplot2)
year <- rep(c(2015:2018), each = 3)
parameters <- rep(c("length", "weight", "condition"), 4)
z_score <- runif(12, min = -2, max = 2)
df <- tibble(year, parameters, z_score)

cols <- c("#d73027",  "darkgrey",  "#4575b4")

ggplot(df, aes(year, parameters, colour = z_score)) +
  geom_point( size=abs(5*df$z_score)) +   # times 5 to increase size
  scale_colour_gradientn(colours = cols) +
  theme(legend.position="bottom") +
  scale_size(range = c(1,15)) +
  guides(color=guide_legend(override.aes = list(size = c( 5, 1, 5))) ) 

enter image description here

为了禁止打印图例的size属性,我将其移到了aes,字段之外。此示例适用于此示例,必须调整size = c(...)以匹配图例中的分割数。

这应该回答您的问题,并帮助您充分了解问题。