У меня есть данные, где я хочу построить гистограммы и линейные графики с одинаковой цветовой схемой, связанной со значениями var2.Однако существует множество значений для var2, которые встречаются только изредка.Вместо того, чтобы находить имена для всех из них и явно кодировать их в цветовую шкалу, я хотел бы установить значение na.value для нескольких цветов, которые можно использовать в случае, если есть несколько значений, которые не соответствуют имени.Вот некоторые примеры данных, адаптированных из этого вопроса .
library(ggplot2)
set.seed(42)
mydata <- data.frame(var1 = sample(c("A", "B", "C", "D"), 150, replace = TRUE),
var2 = sample(c("s", "i", "y", "x"), 150, replace = TRUE),
var3 = sample(1:10,150,replace = TRUE))
my_cols <- c("s" = "steelblue",
"i" = "darkgoldenrod2",
"z" = "red",
"c" = "pink")
. Это хорошо работает для создания гистограммы
ggplot(mydata, aes(x = var1, fill = var2)) +
geom_bar() +
scale_fill_manual(name = "var2",
values = my_cols,
na.value = c("black","green"))

Однако, когда я использую ту же теорию, примененную к geom_line, она окрашивает каждый отрезок линии по-разному.
ggplot(mydata, aes(x = var2, y = var3, col = var2))+
geom_line()+
scale_colour_manual(name = "var2",
values = my_cols,
na.value = c("black","green","cyan"))

ЛюбойИдея, как я мог заставить две строки взять один цвет из na.value для всей их длины?
Примечание: если вы не предоставите цвет для na.value
, он строит график с пустым пространством, гдезначение должно быть.Это может быть очень запутанным, может быть, может быть полезное предупреждающее сообщение?