Две шкалы для одной и той же эстетики c - это, как правило, то, чего вы можете избежать. Старайтесь не перегружать свой график слишком большим количеством измерений для визуализации с той же эстетикой c. Особенно у цветов есть только ограниченный диапазон, где мы можем дифференцировать их.
Ну, это были мои два цента. То, что вы хотите, стало легко с ggnewscale
.
См. Ниже.
library(ggplot2)
library(ggnewscale)
textframe <- data.frame(x = c(3, 5, 7), y = c(25, 25, 27), text = c("t1", "t1", "t2"))
lineframe <- data.frame(x = c(1:10), y = c(20:29), factor = c(rep("a", 5), rep("b", 5)))
ggplot() +
geom_line(data = lineframe, aes(x, y, color = factor)) +
scale_color_brewer(palette = "Set2") +
ggnewscale::new_scale_color() +
geom_text(data = textframe, aes(x, y, label = text, color = text)) +
scale_color_brewer(palette = "Dark2")
Лучше будет другая эстетика c. Здесь, например, очень уместно было бы linetype
.
ggplot() +
geom_line(data = lineframe, aes(x, y, linetype = factor)) +
geom_text(data = textframe, aes(x, y, label = text, color = text)) +
scale_color_brewer(palette = 'Paired')
Создано в 2020-04-03 пакетом Представить ( v0.3.0)