Это отличный вопрос, для которого я видел несколько хаков.Это сложно, потому что оба камня соответствуют цвету, и каждая эстетика может получить только одну легенду.Вот один из способов: на самом деле создайте отдельные легенды, каждая из которых имеет свою эстетику, и замаскируйте их так, чтобы они выглядели как одна легенда.
Для линии вместо сопоставления с цветом я сопоставил «Линии» с типом линий и жесткими.закодировал цвет.Затем я установил шкалу типов линий, чтобы получить 1 сплошную линию.В guides
я вынул заголовок для типа линии и установил порядок следования, так что сначала идет цвет, а затем тип линии.Теперь есть две легенды, но у нижней нет названия.Чтобы они выглядели как одна непрерывная легенда, установите отрицательный интервал между легендами.Конечно, это не сработает, если у вас есть другая легенда, и в этом случае вам понадобятся разные трюки.
library(ggplot2)
ggplot(dat, aes(x = x, y = y)) +
geom_polygon(aes(color = "Border", group = id), fill = NA) +
geom_line(aes(linetype = "Line"), data = line, color = "blue") +
scale_linetype_manual(values = 1) +
guides(linetype = guide_legend(title = NULL, order = 2), color = guide_legend(order = 1)) +
theme(legend.background = element_rect(fill = "transparent"),
legend.box.background = element_rect(fill = "transparent", colour = NA),
legend.key = element_rect(fill = "transparent"),
legend.spacing = unit(-1, "lines") )
Обратите внимание, что есть несколькодля этого вы можете использовать разные комбинации эстетики, а не только цвет + тип линии.Вместо этого вы можете отобразить заливку многоугольника, а затем установить его альфа на 0, чтобы создать легенду заливки, но на самом деле не выглядит заполненной.