Ich verwende R und ggplot, um ein Streudiagramm einiger Daten zu zeichnen. Alles ist in Ordnung, außer dass die Zahlen auf der y-Achse mit einer Exponentenformatierung im Computerstil ausgegeben werden, dh 4e + 05, 5e + 05 usw. Dies ist offensichtlich Inakzeptabel, daher möchte ich, dass sie als 500.000, 400.000 usw. angezeigt werden. Es wäre auch akzeptabel, eine korrekte Exponentennotation zu erhalten.
Der Code für das Diagramm lautet wie folgt:
p <- ggplot(valids, aes(x=Test, y=Values)) +
geom_point(position="jitter") +
facet_grid(. ~ Facet) +
scale_y_continuous(name="Fluorescent intensity/arbitrary units") +
scale_x_discrete(name="Test repeat") +
stat_summary(fun.ymin=median, fun.ymax=median, fun.y=median, geom="crossbar")
Jede Hilfe sehr geschätzt.
ggplot
Standardoptionen nicht als "offensichtlich inakzeptabel". Sie meinen, Sie haben eine persönliche Präferenz für ein anderes Format. Eine Zahl im Format4e+05
ist eine wissenschaftliche Notation und wäre die bevorzugte Formatierung in einer Vielzahl von Anwendungen.Antworten:
Eine andere Möglichkeit besteht darin, Ihre Achsen-Tick-Beschriftungen mit Kommas zu formatieren, indem Sie das Paket verwenden
scales
und hinzufügenzu Ihrer ggplot-Anweisung.
Wenn Sie das Paket nicht laden möchten, verwenden Sie:
quelle
Ich habe auch einen anderen Weg gefunden, der die richtige 'x10 (hochgestellte) 5'-Notation auf den Achsen ergibt. Ich poste es hier in der Hoffnung, dass es für einige nützlich sein könnte. Ich habe den Code von hier bekommen, also beanspruche ich keine Gutschrift dafür, das geht zu Recht an Brian Diggs.
Welche können Sie dann als verwenden
quelle
format(...)
Zeile Folgendes hinzu:l <- gsub("0e\\+00","0",l)
gsub()
direkt nach dem hinzufügenformat()
, währendformat()
Sie in einer separaten Konsole testen, was für Ihren Fall zurückgegeben wird.gsub
Befehl hinzu:# remove + after exponent, if exists. E.g.: (3x10^+2 -> 3x10^2)
l <- gsub("e\\+","e",l)
und danach:,# convert 1x10^ or 1.000x10^ -> 10^
l <- gsub("\\'1[\\.0]*\\'\\%\\*\\%", "", l)
um es in dem Format zu erstellen, das normalerweise in Papieren verwendet wird.quelle
library(scales)
und zu verwenden,comma
der besser funktionieren sollte als die Funktion, die ich zuvor hatte.Ich bin hier zu spät zum Spiel, aber für den Fall, dass andere eine einfache Lösung wünschen, habe ich eine Reihe von Funktionen erstellt, die wie folgt aufgerufen werden können:
die Ihnen vom Menschen lesbare Zahlen für die x- oder y-Achse geben (oder wirklich jede Zahl im Allgemeinen).
Die Funktionen finden Sie hier: Github Repo Kopieren Sie die Funktionen einfach in Ihr Skript, damit Sie sie aufrufen können.
quelle
Ich finde Jack Aidleys vorgeschlagene Antwort nützlich.
Ich wollte eine andere Option ausschließen. Angenommen, Sie haben eine Reihe mit vielen kleinen Zahlen und möchten sicherstellen, dass die Achsenbeschriftungen den vollen Dezimalpunkt (z. B. 5e-05 -> 0,0005) ausschreiben. Dann:
quelle
scale_y_continuous(labels=function(n){format(n, scientific = FALSE)})
Warum es so einen vordefinierten Formatierer nicht gibt, weiß die Hölle.