Füge Vline zu bestehendem Plot hinzu und tauche es in der Legende von ggplot2 auf?

Ich habe einige Daten, die ich zum Zeichnen eines Histogramms verwende. Ich habe auch zwei Sätze von Schwellenwerten, die von Bedeutung sind.

Ich kann das Histogramm und die Linien mit den entsprechenden Stilen zeichnen. Ich kann jedoch nicht erreichen, dass meine Vlines in der Legende angezeigt werden. Ich glaube, dass so etwas funktionieren sollte, aber die Legendenelemente werden nie angezeigt.

df <- data.frame(val=rnorm(300, 75, 10))

cuts1 <- c(43, 70, 90)
cuts2 <- c(46, 79, 86)

ggplot(data=df, aes(x=val)) +
  geom_histogram() +
  geom_vline(xintercept=cuts1,
             linetype=1,
             color="red",
             labels="Thresholds A",
             show_guide=TRUE) +
  geom_vline(xintercept=cuts2,
             linetype=2,
             color="green",
             labels="Thresholds B",
             show_guide=TRUE)

Wenn ich alternativ einen data.frame für meine Schnitte konstruiere und eine ästhetische Zuordnung vornehme, können meine Linien in der Legende angezeigt werden. Leider gibt mir die Legende zwei Instanzen der verschiedenen Linientypen, die sich überlagern:

cuts1 <- data.frame(Thresholds="Thresholds A", vals=c(43, 70, 90))
cuts2 <- data.frame(Thresholds="Thresholds B", vals=cuts2 <- c(46, 79, 86))

ggplot(data=df, aes(x=val)) +
  geom_histogram() +
  geom_vline(data=cuts1, aes(xintercept=vals, shape=Thresholds),
             linetype=1,
             color="red",
             labels="Thresholds A",
             show_guide=TRUE) +
  geom_vline(data=cuts2, aes(xintercept=vals, shape=Thresholds),
             linetype=2,
             color="green",
             labels="Thresholds B",
             show_guide=TRUE)

Letztendlich ist das, wonach ich suche, die einfachste Möglichkeit, zwei Sätze von Linien manuell zu einem Plot hinzuzufügen und sie dann korrekt in der Legende anzuzeigen.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage