如何在连续的颜色图例中添加一条线而不是图?

时间:2017-10-09 04:09:25

标签: r ggplot2

有没有办法在连续渐变图例中添加一行 ?我无法使用ggplot2找到任何这方面的例子。

例如,我怎么能在只有1.7?

的图例中添加一条红色水平线
library(ggplot2)
x <- seq(1:1000)
y <-rnorm(1000,0,1)
df <- data.frame(x,y)
ggplot(df, aes(x, y, color = y)) + geom_point()

enter image description here

像这样:

enter image description here

为什么我喜欢它可能没有多大意义。有关更多背景信息,我希望在这些地块的图例中添加红线(4552),以显示不同气候变化情景下不同年度水库流入预测背景下水库的容量。讨论目的(我不需要注释红线)。有很多水库,所以如果可能的话我想用R做这一切。

感谢您的任何想法。

enter image description here

1 个答案:

答案 0 :(得分:4)

不确定如何在渐变图例上添加自定义线,但我知道如何使用自定义颜色添加自定义刻度标签:

library(ggplot2)
ggplot(df, aes(x, y, color = y)) + 
  geom_point() +
  scale_colour_gradient(breaks = c(-2, 0, 1.7, 2),
                        labels = c(-2, 0, "1.7 (important)", 2)) +
  guides(color = guide_colorbar(barheight = 10,
                                label.theme = element_text(colour = c("black", "black", 
                                                                      "red", "black"), 
                                                           angle = 0,
                                                           size = 12)))

enter image description here

请注意,“1.7”标签与“2”标签重叠。您可以执行以下操作:

ggplot(df, aes(x, y, color = y)) + 
  geom_point() +
  scale_colour_gradient(breaks = c(-2, 0, 1.7, 2),
                        labels = c(-2, 0, "<-- 1.7 (important)", 2)) +
  guides(color = guide_colorbar(barheight = 10,
                                label.theme = element_text(colour = c("black", "black", 
                                                                      "red", "black"), 
                                                           angle = 0,
                                                           size = 12)))

enter image description here

或调整“1.7”标签的水平位置:

ggplot(df, aes(x, y, color = y)) + 
  geom_point() +
  scale_colour_gradient(breaks = c(-2, 0, 1.7, 2),
                        labels = c(-2, 0, "1.7 (important)", 2)) +
  guides(color = guide_colorbar(barheight = 10,
                                label.hjust = c(0, 0, 0.1, 0),
                                label.theme = element_text(colour = c("black", "black", 
                                                                      "red", "black"), 
                                                           angle = 0,
                                                           size = 12)))

enter image description here