J'utilise R et ggplot pour dessiner un nuage de points de certaines données, tout va bien sauf que les nombres sur l'axe y sortent avec un formatage d'exposant de style informatique, c'est-à-dire 4e + 05, 5e + 05, etc. C'est évidemment inacceptable, alors je veux que cela affiche 500 000, 400 000 et ainsi de suite. Obtenir une notation d'exposant appropriée serait également acceptable.
Le code du tracé est le suivant:
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")
Toute aide très appréciée.
ggplot
options par défaut comme «manifestement inacceptables». Vous voulez dire que vous avez une préférence personnelle pour un format différent. Un nombre dans le format4e+05
est une notation scientifique et serait le formatage préféré dans une grande variété d'applications.Réponses:
Une autre option consiste à mettre en forme vos étiquettes de graduation d'axe avec des virgules en utilisant le package
scales
et en ajoutantà votre instruction ggplot.
Si vous ne souhaitez pas charger le package, utilisez:
la source
J'ai également trouvé une autre façon de faire cela qui donne une notation appropriée 'x10 (exposant) 5' sur les axes. Je le publie ici dans l'espoir qu'il pourrait être utile à certains. J'ai obtenu le code d' ici, donc je n'en revendique aucun crédit, cela revient à juste titre à Brian Diggs.
Que vous pouvez ensuite utiliser comme
la source
format(...)
ligne:l <- gsub("0e\\+00","0",l)
gsub()
directement après leformat()
, tout en testant ce quiformat()
revient pour votre cas dans une console séparée.gsub
commande:# remove + after exponent, if exists. E.g.: (3x10^+2 -> 3x10^2)
l <- gsub("e\\+","e",l)
et après:# convert 1x10^ or 1.000x10^ -> 10^
l <- gsub("\\'1[\\.0]*\\'\\%\\*\\%", "", l)
pour le rendre au format habituellement utilisé dans les papiers.la source
library(scales)
et utilisercomma
ce qui devrait mieux fonctionner que la fonction que j'avais auparavant.Je suis en retard au jeu ici mais au cas où d'autres voudraient une solution simple, j'ai créé un ensemble de fonctions qui peuvent être appelées comme:
qui vous donnent des nombres lisibles par l'homme pour les axes x ou y (ou n'importe quel nombre en général vraiment).
Vous pouvez trouver les fonctions ici: Github Repo Copiez simplement les fonctions dans votre script pour pouvoir les appeler.
la source
Je trouve la réponse suggérée par Jack Aidley utile.
Je voulais jeter une autre option. Supposons que vous ayez une série avec de nombreux petits nombres et que vous vouliez vous assurer que les étiquettes des axes écrivent le point décimal complet (par exemple 5e-05 -> 0,0005), puis:
la source
scale_y_continuous(labels=function(n){format(n, scientific = FALSE)})
pourquoi il n'y a pas de formateur prédéfini comme ça, l'enfer sait.