我正在制作一个显示三种不同类型的情节。 其中一种类型具有连续的方差,因此使用连续色标显示。 其他两种类型都有自己的颜色。
我只能获得一个连续类型的图例,而不是两个离散类型。我尝试使用建议here,但收到了消息
警告:忽略未知的美学:填写
如何获得连续线和离散线的图例?
library(tidyverse)
library(ggplot2)
type1 <- tibble(y = rep(1:10, each = 20 ), x = rep(1:20, times = 10), type = rep(1:10, each = 20 ) %>% as.character)
type2 <- tibble(y = seq(from = 0.5, to = 10, by=0.5), x = 1:20, type = "A")
type3 <- tibble(y = seq(from = 10, to = 0.5, by=-0.5), x = 1:20, type = "B")
type1 %>% #need to remove infinte values
ggplot(aes(x, y, group = type)) +
geom_line(aes(colour = y)) +
scale_colour_gradientn(colors = c("red", "limegreen"), name = "Type1 value") +
geom_line(data = type2,
aes(x,y)) +
geom_line(data = type3,
aes(x, y), colour = "blue" )
制作的情节看起来像这样。 我想要相同的情节,但有一个额外的图例,显示类型2的黑色和类型3的蓝色。因此,图例将是离散和连续的混合。
答案 0 :(得分:2)
好的,所以一个全新的答案:
这里是:
type1 %>% #need to remove infinte values
ggplot(aes(x, y, group = type)) +
geom_line(aes(colour = y), show.legend = TRUE) +
scale_colour_gradientn(colors = c("red", "limegreen"), name = "Type1 value") +
geom_line(data = type2,
aes(x,y, fill = 'type2'), color = 'black') +
geom_line(data = type3,
aes(x, y, fill = 'type3'), color = 'blue') +
scale_fill_manual("Types", values=c(1, 1),
guide=guide_legend(override.aes = list(colour=c("black", "blue")))
)
这是一个令人烦恼的解决方法,但它可以完成工作
你基本上使用show.legend
获取第一个图例,fill
强制使用第二个图例(因此忽略警告,因为显然没有任何东西可以填充一行),然后{ {1}}允许您将颜色添加到图例
答案 1 :(得分:0)
不完全确定所需的输出是什么
例如:
type1 %>% #need to remove infinte values
ggplot(aes(x, y, group = type)) +
geom_line(aes(color = 'type1')) +
geom_line(data = type2, aes(x,y, color='type2')) +
geom_line(data = type3, aes(x, y, color='type3'))
或
type1 %>% #need to remove infinte values
ggplot(aes(x, y, group = type)) +
geom_line(aes(color = type), show.legend = TRUE) +
geom_line(data = type2, aes(x,y, color='type2'), show.legend = TRUE) +
geom_line(data = type3, aes(x, y, color='type3'), show.legend = TRUE)
或者是完全不同的东西