Ich habe folgendes Problem: Ich möchte eine diskrete und eine kontinuierliche Variable auf einem Boxplot visualisieren, in dem letzterer einige extrem hohe Werte hat. Das macht den Boxplot bedeutungslos (die Punkte und sogar der "Körper" des Charts sind zu klein), deshalb möchte ich das auf einer Log10-Skala zeigen. Mir ist bewusst, dass ich die extremen Werte aus der Visualisierung weglassen könnte, aber das ist nicht beabsichtigt.Transformiere nur eine Achse auf log10 mit ggplot2
Nehmen wir ein einfaches Beispiel mit Diamanten Daten sehen:
m <- ggplot(diamonds, aes(y = price, x = color))
Das Problem hier ist nicht ernst, aber ich hoffe, dass man sich vorstellen kann, warum ich möchte die Werte bei einer log10 Skala sehen . Versuchen wir es:
m + geom_boxplot() + coord_trans(y = "log10")
Wie Sie die y-Achse ist log10 skaliert sehen und sieht gut aus, aber es gibt ein Problem mit der x-Achse, die die Handlung sehr merkwürdig macht.
Das Problem tritt nicht mit scale_log
auf, aber das ist keine Option für mich, da ich einen benutzerdefinierten Formatierer auf diese Weise nicht verwenden kann. Z.B .:
m + geom_boxplot() + scale_y_log10()
Meine Frage: jemand eine Lösung kennt die boxplot mit log10 Skala auf der y-Achse plotten, die Etiketten frei mit einer formatter
Funktion wie in diesem thread formatiert werden könnte?
die Frage bearbeiten Beantworter auf Antworten und Kommentare basierend zu helfen:
Was ich wirklich nach: ein log10 transformierte Achse (y) mit nicht wissenschaftlichen Etiketten. Ich möchte es wie Dollar (formatter=dollar)
oder irgendein kundenspezifisches Format beschriften.
Wenn ich @ hadley Vorschlag versuchen, erhalte ich die folgenden Warnungen:
> m + geom_boxplot() + scale_y_log10(formatter=dollar)
Warning messages:
1: In max(x) : no non-missing arguments to max; returning -Inf
2: In max(x) : no non-missing arguments to max; returning -Inf
3: In max(x) : no non-missing arguments to max; returning -Inf
bei unveränderter y-Achse Etiketten:
T Das ist ein Fehler in 'coord_trans' - aber Sie können benutzerdefinierte Bezeichnungen für' scale_y_log10' angeben ... – hadley
Danke @hadley, ich sollte etwas vermissen, aber zB.'+ scale_y_continous (Formatierer = Dollar)' funktioniert einfach nicht. Ich kann das Ergebnis eines Formatierer nicht sehen und ich bekomme auch drei 'In max (x): keine nicht fehlenden Argumente zu max; "Warnmeldungen" zurückgeben. – daroczig
@daroxzig: Die Beispiele, die ich für das Formatiererargument gesehen habe, haben alle zitierte Namen, also vielleicht 'formatter =" dollar "'? –