2016-04-10 6 views
0

Ich erstelle eine ggplotly für einen Datenrahmen, der diamonds sehr ähnlich ist. Hier ist, was ich bisher:ggplotly: R, Trace-Namen beschriftend, aber behalten Sie eine Zeile

ggplotly(ggplot(diamonds, aes(depth, colour = cut)) + 
geom_density() + 
xlim(55, 70)) 

Es werden folgende:

enter image description here

Wenn Sie über die Spur schweben es zeigt: Tiefe, geschnitten und Dichte. Ich möchte auch die Klarheit zeigen, so dass ich wie folgt ergänzt:

ggplotly(ggplot(diamonds, aes(depth, text = paste("Clarity: ", clarity), colour = cut)) + 
geom_density() + 
xlim(55, 70)) 

Dieser Befehl erstellt die folgende: ggplot

Wenn ich an der Kurve schweben es Tiefe, Klarheit zeigt, geschnitten und Dichte. Das ist, was ich will. Wie aber behalte ich die Dichte als eine Kurve wie in der ersten Kurve, die ich erstellt habe, anstelle von mehreren Kurven?

+0

Versuchen Sie ohne 'Aes' für Text, aber Sie müssen' Diamanten $ Klarheit' schreiben – TheRimalaya

Antwort

1

Funktioniert das? Stellen Sie die Alpha der zusätzlichen Linien auf 0 (so werden sie transparent. Mit geom_line als geom_density verwendet alpha für fill nur. (Systemprobleme verhindern Tests)

ggplotly(
    ggplot(diamonds, aes(depth, colour = cut)) + 
    geom_density() + 
    geom_line(aes(text = paste("Clarity: ", clarity)), stat="density", alpha=0) + 
    xlim(55, 70) 
) 
+0

Es hat nicht funktioniert. Es zeigt eine Kerndichte-Linie für jeden Schnitt, aber es werden nur drei Trace-Namen angezeigt: Tiefe, Schnitt und Dichte. NA hat die zusätzlichen Zeilen entfernt, aber wenn ich über die Stelle fahre, an der sie früher waren, werden vier Trace-Namen angezeigt: Tiefe, Schnitt, Klarheit und Dichte. – cooldood3490

+0

Noch einmal versucht. Hoffentlich wird es jetzt funktionieren. –

+0

Es ist ein kleiner Buggy, aber es funktioniert. +1 danke. – cooldood3490

0

Mir ist klar, dass dies eine alte Antwort, aber die Haupt Problem hier ist, dass Sie versuchen, etwas zu tun, was logisch unmöglich ist.

clarity und cut zwei separate Dimensionen sind, so dass Sie nicht einfach die clarity in einem Tooltip aufs Spiel setzen können, die von cut, weil diese Linie gruppiert sind stellt Diamanten aller verschiedener clarity s zusammen dar.

Sobald Sie hinzufügen clarity in die Mischung (über die text Ästhetik), ggplot zu Recht trennt die verschiedenen clarities heraus, so dass es eine clarity zu verweisen hat. Sie könnten es zurück zum Gruppieren nur durch durch Hinzufügen von group=cut zu aes, aber Sie verlieren die clarity Tooltip, weil es keinen sinnvollen Wert von clarity, wenn Sie nur von gruppieren - wieder, jeder Punkt ist alle Klarheiten bei Einmal.

Richards Lösung zeigt einfach beide Graphen gleichzeitig an, macht aber die clarity -Gruppen unsichtbar. Ich bin mir nicht sicher, was das ursprüngliche Ziel hier war, aber das bringt nichts nützliches, denn es lässt Sie neben den richtig gruppierten Bändern einfach über die unsichtbaren Spitzen hinaus.

Ich bin mir nicht sicher, was Ihre ursprünglichen Daten waren, aber Sie können einfach nicht zwei Dimensionen anzeigen und gruppieren nur durch eine von ihnen. Sie müssten entweder die mehreren Kurven verwenden, die genau die zweite Dimension darstellen, oder die zweite Dimension abflachen, indem Sie eine Art Zusammenfassung durchführen - im Fall von clarity gibt es nicht wirklich eine vernünftige Zusammenfassung, die Sie tun können, aber wenn es war, sagen wir, Preis, du könntest einen Durchschnitt anzeigen.

Verwandte Themen