我想绘制一些标准化为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())
我尝试的一个技巧是使用z_score的绝对值来正确缩放点,但弄乱了图例。
这就是我想要的图例和磅值要缩放的内容,尽管我希望颜色如示例中那样是渐变的。任何见识将不胜感激!
答案 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))) )
为了禁止打印图例的size属性,我将其移到了aes,字段之外。此示例适用于此示例,必须调整size = c(...)以匹配图例中的分割数。
这应该回答您的问题,并帮助您充分了解问题。