Ich habe ein Objekt von beispielsweise ggplot2
, myPlot
wie kann ich die Bereiche für die x- und y-Achse identifizieren?
Es scheint kein einfaches Vielfaches des Datenwertbereichs zu sein, da Diagramme neu skaliert, Achsenbereiche geändert werden können usw. findFn
(von sos
) und Google scheinen keine relevanten Ergebnisse zu liefern, außer wie die Achsenbereiche eingestellt werden.
expand
. Siehe hier .expand
Argument zu denscale_*
Funktionen inggplot
. Siehe zum Beispiel die hier aufgeführten Standardeinstellungen .ggplot_build(obj)$layout$panel_scales_x[[1]]$range$range
ggplot_build(obj)$layout$panel_scales_y[[1]]$range$range
Antworten:
In neueren Versionen von ggplot2 finden Sie diese Informationen in der Ausgabe von
ggplot_build(p)
, wop
sich Ihr ggplot-Objekt befindet.Für ältere Versionen von ggplot (<0.8.9) funktioniert die folgende Lösung:
Und bis Hadley die neue Version veröffentlicht, könnte dies hilfreich sein. Wenn Sie die Grenzen im Plot nicht festlegen, enthält das ggplot-Objekt keine Informationen. In diesem Fall können Sie jedoch die Standardeinstellungen von ggplot2 verwenden und xlim und ylim aus den Daten abrufen.
Sobald Sie die Grenzwerte festgelegt haben, werden sie im Objekt verfügbar:
quelle
ggplot2
Version 2.1.0.9001 verwenden Sie diesenR
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 und (höchstwahrscheinlich) neuere verwenden Sie diesenR
Code:ggplot_build(obj)$layout$panel_scales_x[[1]]$range$range
ggplot_build(obj)$layout$panel_scales_y[[1]]$range$range
Ich verwende
ggplot2
Version 2 und bin mir nicht sicher, ob dies mit der vorherigen Version identisch ist. Angenommen, Sie haben Ihr Diagramm auf einemplt
Objekt gespeichert . Es ist einfach, die Bereiche zu extrahieren,Im Falle eines Facettendiagramms können Sie mit auf Skalen einzelner Facetten zugreifen
layer_scales(plot, row_idx, col_idx)
. Um beispielsweise auf die Facette in der ersten Zeile und zweiten Spalte zuzugreifen,quelle
ylim
odercoord_cartesian
), wird die Skalenerweiterung auf diese Grenzwerte angewendet und nicht auf diejenigen, die durch den hier angegebenen Code zurückgegeben werden.November 2018 UPDATE
Ab
ggplot2
Version 3.1.0 funktioniert Folgendes:Eine Komfortfunktion:
Bis zum nächsten Update ...
quelle
Holen Sie sich die yrange mit
und der xrange mit
quelle
In Version 2.2.0 muss dies wie folgt erfolgen:
quelle
Ab August 2018 extrahieren Sie die x- und y-Achsenbereiche wie folgt.
ggplot_build(obj)$layout$panel_scales_x[[1]]$range$range
ggplot_build(obj)$layout$panel_scales_y[[1]]$range$range
quelle
Wie hier erwähnt: https://gist.github.com/tomhopper/9076152#gistcomment-2624958 gibt es einen Unterschied zwischen den beiden Optionen:
Hier finden Sie eine Reihe von praktischen Funktionen, mit denen Sie eine Liste von Plots erstellen, den gemeinsamen Bereich der y-Achse extrahieren und ersetzen können. Ich brauchte es, weil ich verschiedene Datensätze in einem Diagramm verwendet habe, das über Folgendes angeordnet ist
ggarange
:Ich dachte, das könnte auch für andere nützlich sein.
quelle
stat_smooth( method = "lm")