Ich habe ein Diagramm der Windgeschwindigkeiten gegen die Richtung, das eine große Anzahl von Punkten hat, und verwende daher zusätzlich zu Farbe = Monat Alpha = I (1/20)
Hier ist ein Codebeispiel:
library(RMySQL)
library(ggplot2)
con <- dbConnect(...)
wind <- dbGetQuery(con, "SELECT speed_w/speed_e AS ratio, dir_58 as dir, MONTHNAME(timestamp) AS month, ROUND((speed_w+speed_e)/2) AS speed FROM tablename;");
png("ratio-by-speed.png",height=400,width=1200)
qplot(wind$dir,wind$ratio,ylim=c(0.5,1.5),xlim=c(0,360),color=wind$month,alpha=I(1/30),main="West/East against direction")
dev.off()
Dies führt zu einem anständigen Diagramm. Mein Problem ist jedoch, dass das Alpha der Legende ebenfalls 1/30 beträgt, was es unlesbar macht. Gibt es eine Möglichkeit, die Legende auf 1 Alpha zu zwingen?
Hier ist ein Beispiel:
guides()
Funktion in verschiedene Positionen gebracht, aber ich bekomme nicht das erwartete Verhalten. Irgendwelche Hinweise?colour
vornehmen , je nachdem, was Sie zum Festlegen der Farben verwenden. Zum Beispiel habe ich die obige Lösung mit verwendet,guides(fill = guide_legend(...))
da ich sieaes(fill = val)
für meinen Plot verwendet habeEin bisschen googeln ist in diesem Beitrag aufgetaucht, was nicht darauf hindeutet, dass ggplot diese Option derzeit unterstützt. Andere haben verwandte Probleme mithilfe von gridExtra und viewPorts behoben, wie hier erläutert .
Ich bin nicht so raffiniert, aber hier ist ein Ansatz, der Ihnen die gewünschten Ergebnisse liefern sollte. Der Ansatz besteht darin, das Geom zweimal zu zeichnen, einmal ohne Alpha-Parameter und außerhalb des realen Plotbereichs. Das zweite Geom enthält den Alpha-Parameter und unterdrückt die Legende. Wir werden dann den Plotbereich mit xlim und ylim spezifizieren. Angesichts der Tatsache, dass Sie viele Punkte haben, wird dies die Plotzeit ungefähr verdoppeln, sollte Ihnen jedoch den gewünschten Effekt verleihen.
Verwenden des Diamanten-Datensatzes:
#Alpha parameter washes out legend ggplot(data = diamonds, aes(depth, price, colour = clarity)) + geom_point(alpha = 1/10) #Fully colored legend ggplot() + geom_point(data = diamonds, aes(depth, price, colour =clarity), alpha = 1/10, legend = FALSE) + geom_point(data = diamonds, aes(x = depth - 999999, y = price - 999999, colour = clarity)) + xlim(40, 80) + ylim(0, 20000)
quelle