Добавление нового легена в R ggplot - PullRequest
1 голос
/ 16 марта 2020

Я пытаюсь добавить новую линию исправления (3,75 по оси X), которая описывает текущее состояние и другие сценарии ios, которые происходят из симуляции очередей, но когда я хочу добавить легенду о текущем исправлении статус Я не могу показать легенду, например, я хочу, чтобы она появилась в легенде под названием «Текущая емкость»

1) Код, который запускается и показывает строку, но не метку:

p1<-ggplot(Datos, aes(x=Capacity, y=WaitingTime, group=Scenario)) +  geom_line(aes(color=Scenario,linetype=Scenario),size=0.7) +  geom_point(aes(color=Scenario)) +   geom_vline(xintercept = 3.75, linetype="dashed", color = "darkblue", size=1)

2) Код, который запускается и показывает строку, но не метку:

p1<-ggplot(Datos, aes(x=Capacity, x=WaitingTime, group=Scenario)) + geom_line(aes(color=Scenario,linetype=Scenario),size=0.7) + geom_point(aes(color=Scenario)) + geom_vline(aes(xintercept = 3.75, linetype = "Capacity"), show.legend = TRUE) + scale_linetype_manual(values = c("Capacity" = "dashed"))

3) Код, который запускается и показывает повторные метки:

p1<-ggplot(Datos, aes(x=Capacity, x=WaitingTime, group=Scenario)) + geom_line(aes(color=Scenario,linetype=Scenario),size=0.7) + geom_point(aes(color=Scenario)) + geom_vline(aes(xintercept=3.75, lty='Capacity'), col = "red")

Example plot

1 Ответ

0 голосов
/ 16 марта 2020

Хитрость заключается в том, чтобы нанести на карту эстетику c внутри geom_vline, не используемую другими геомами. Используя mtcars в качестве примера данных в следующем коде, я отображаю «Текущая емкость» на alpha в geom_vline. В результате получается легенда для альфы, которую затем можно настроить, используя scale_alpha_manual и guide_legend, чтобы работать в качестве легенды для вертикальной линии.

Я заимствовал этот подход из http://www.quantide.com/ggplot-multiple-legends-for-the-same-aesthetic/ .

library(ggplot2)

p1 <- ggplot(mtcars, aes(x=hp, y=mpg, group = factor(cyl))) +  
  geom_line(aes(linetype = factor(cyl)), size = .7) +  
  geom_point(aes(color = factor(gear))) + 
  geom_vline(aes(xintercept = 3.75, alpha = "Current Capacity"), size = 1, linetype = "dashed") +
  scale_alpha_manual(values = c("Current Capacity" = 1)) +
  guides(alpha = guide_legend(override.aes = list(linetype = "dashed", size = 1)))

p1

Создано в 2020-03-16 пакетом Представить (v0.3.0)

...