J'ai un objet ggplot2
, disons myPlot
, comment puis-je identifier les plages pour les axes x et y?
Cela ne semble pas être un simple multiple de la plage des valeurs de données, car on peut redimensionner les tracés, modifier les plages des axes, etc. findFn
(from sos
) et Google ne semblent pas donner de résultats pertinents, à part la manière de définir les plages des axes.
expand
. Regardez ici .expand
argument desscale_*
fonctions dansggplot
. Par exemple, consultez les valeurs par défaut répertoriées ici .ggplot_build(obj)$layout$panel_scales_x[[1]]$range$range
ggplot_build(obj)$layout$panel_scales_y[[1]]$range$range
Réponses:
Dans les versions plus récentes de ggplot2, vous pouvez trouver ces informations dans la sortie de
ggplot_build(p)
, où sep
trouve votre objet ggplot.Pour les anciennes versions de ggplot (<0.8.9), la solution suivante fonctionne:
Et jusqu'à ce que Hadley publie la nouvelle version, cela pourrait être utile. Si vous ne définissez pas les limites dans le tracé, il n'y aura aucune information dans l'objet ggplot. Cependant, dans ce cas, vous pouvez utiliser les valeurs par défaut de ggplot2 et obtenir les xlim et ylim à partir des données.
Une fois que vous avez défini les limites, elles deviennent disponibles dans l'objet:
la source
ggplot2
version 2.1.0.9001, utilisez ceR
code:ggplot_build(obj)$layout$panel_ranges[[1]]$x.range
ggplot_build(obj)$layout$panel_ranges[[1]]$y.range
ggplot2
version 2.2.1.9000 et (très probablement) plus récente, utilisez ceR
code:ggplot_build(obj)$layout$panel_scales_x[[1]]$range$range
ggplot_build(obj)$layout$panel_scales_y[[1]]$range$range
J'utilise la
ggplot2
version 2, je ne sais pas s'il s'agit de la version précédente, supposons que vous ayez enregistré votre tracé sur l'plt
objet. Il est facile d'extraire les gammes,En cas de tracé de facettes, vous pouvez accéder aux échelles des facettes individuelles à l'aide de
layer_scales(plot, row_idx, col_idx)
. Par exemple pour accéder à la facette de la première ligne et de la deuxième colonne,la source
ylim
oucoord_cartesian
), l'expansion d'échelle sera appliquée à ces limites plutôt qu'à celles renvoyées par le code donné ici.MISE À JOUR novembre 2018
À partir de la
ggplot2
version 3.1.0 , les éléments suivants fonctionnent:Une fonction de confort:
Jusqu'à la prochaine mise à jour ...
la source
Obtenez le yrange avec
et le xrange avec
la source
Dans la version 2.2.0, cela doit être fait comme suit:
la source
Depuis août 2018, vous extrayez les plages des axes x et y avec les éléments suivants.
ggplot_build(obj)$layout$panel_scales_x[[1]]$range$range
ggplot_build(obj)$layout$panel_scales_y[[1]]$range$range
la source
Comme mentionné ici: https://gist.github.com/tomhopper/9076152#gistcomment-2624958 il y a une différence entre les deux options:
Voici un ensemble de fonctions pratiques pour prendre une liste de tracés, extraire la plage commune de l'axe y et la remplacer. J'en avais besoin parce que j'ai utilisé différents ensembles de données dans un graphique organisé via
ggarange
:J'ai pensé que cela pourrait également être utile pour d'autres.
la source
stat_smooth( method = "lm")