Das Paket „ ggpp “ stellt eine Reihe von Bausteinen bereit, die die im Paket „ggplot2“ (>= 3.5.0) implementierte Grammatik der Grafiken erweitern. Die Erweiterungen verbessern die Unterstützung von Datenbeschriftungen und Anmerkungen in Diagrammen. Positionsfunktionen implementieren neue Ansätze zum Nudging, die mit jeder Geometrie verwendbar sind, aber besonders nützlich zusammen mit geom_text_s()
und geom_label_s()
aus diesem Paket und geom_text_repel()
und geom_label_repel()
aus dem Paket „ggrepel“ (>= 0.9.2). Siehe: (https://ggrepel.slowkow.com) für Installationsanweisungen und Neuigkeiten zu Veröffentlichungen.
Normalisierte übergeordnete Koordinaten (NPC) werden nativ von 'ggplot2' >= 3.5.0 mithilfe der Identitätsfunktion I()
von R unterstützt. Dieser neue Ansatz erfordert keine speziellen Geometrien, da er mit fast jeder vorhandenen Geometrie funktionieren sollte. Derzeit funktioniert dies jedoch nur, wenn kontinuierliche Variablen der x- und/oder y -Ästhetik zugeordnet werden. Wenn dieser Mechanismus in Zukunft auf Unterstützungsfaktoren und andere diskrete Variablen ausgeweitet wird, könnten alle _npc
-Geometrien von „ggpp“ überflüssig werden. Mittlerweile füllen diese speziellen Geometrien von „ggpp“ immer noch eine, wenn auch kleinere, Lücke in der Unterstützung von NPC durch „ggplot2“.
Der Unterschied zwischen Beobachtungen oder auf X- und Y- Ästhetik abgebildeten Daten und Datenbeschriftungen besteht darin, dass Datenbeschriftungen mit den Koordinaten der Daten verknüpft sind, ihr eigener Standort jedoch normalerweise in der Nähe liegt, jedoch nicht genau der der Daten. Mit anderen Worten: Die Position einer Datenbeschriftung in x- und y -Koordinaten ist flexibel, solange die Verbindung zu einer Datenbeobachtung abgeleitet werden kann. Im Falle von Anmerkungen ist die Position auf dem Plotbereich willkürlich und wird durch verfügbare grafische Designüberlegungen und die Anforderung, Datenbeobachtungen nicht zu verdecken, bestimmt. In der folgenden Tabelle listen wir für die im Paket „ggpp“ definierten Geometrien auf: 1) ob sie für Datenbeschriftungen, Anmerkungen oder Daten gedacht sind, 2) die Ästhetik und Pseudoästhetik, denen sie gehorchen, und 3) ob sie das Original verbinden können Datenposition auf die verschobene Position. Das Zeichnen von Verbindungssegmenten oder Pfeilen zwischen den verschobenen und ursprünglichen Positionen, denen der Beobachtung und der verschobenen Beschriftung, erfordert auch eine Änderung der von Positionsfunktionen zurückgegebenen Daten (siehe nächster Abschnitt).
Geometrie | Hauptverwendung | Ästhetik | Segment |
---|---|---|---|
geom_text_s() | Datenbeschriftungen | x, y, Beschriftung, Größe, Familie, Schriftart, Farbe, Alpha, Gruppe, Winkel, vjust, hjust | Ja |
geom_label_s() | Datenbeschriftungen | x, y, Beschriftung, Größe, Familie, Schriftart, Farbe, Füllung, Alpha, Linienbreite, Linientyp, Gruppe, vjust, hjust | Ja |
geom_text_pairwise() | Datenbeschriftungen | x, xmin, xmax, y, Beschriftung, Größe, Familie, Schriftart, Farbe, Alpha, Gruppe, Winkel, vjust, hjust | horizontal. |
geom_label_pairwise() | Datenbeschriftungen | x, xmin, xmax, y, Beschriftung, Größe, Familie, Schriftart, Farbe, Füllung, Alpha, Linienbreite, Linientyp, Gruppe, vjust, hjust | horizontal. |
geom_point_s() | Datenbeschriftungen | x, y, Größe, Farbe, Füllung, Alpha, Form, Strich, Gruppe | Ja |
geom_table() 1 | Datenbeschriftungen | x, y, Beschriftung, Größe, Familie, Schriftart, Farbe, Alpha, Gruppe, Winkel, vjust, hjust | Ja |
geom_plot() 1 , geom_grob() 1 | Datenbeschriftungen | x, y, Beschriftung, Gruppe, Winkel, vjust, hjust | Ja |
geom_margin_arrow() | Datenbeschriftungen, Skalenbeschriftungen, Daten | xintercept, yintercept, Beschriftung, Größe, Familie, Schriftart, Farbe, Alpha, Gruppe, vjust, hjust | NEIN |
geom_margin_point() | Datenbeschriftungen, Skalenbeschriftungen, Daten | xintercept, yintercept, Beschriftung, Größe, Familie, Schriftart, Farbe, Alpha, Gruppe, vjust, hjust | NEIN |
geom_margin_grob() | Datenbeschriftungen, Skalenbeschriftungen, Daten | xintercept, yintercept, Beschriftung, Größe, Familie, Schriftart, Farbe, Alpha, Gruppe, vjust, hjust | NEIN |
geom_quadrant_lines() , geom_vhlines() | Datenbeschriftungen, Skalenbeschriftungen, Daten | xintercept, yintercept, Beschriftung, Größe, Familie, Schriftart, Farbe, Alpha, Gruppe, vjust, hjust | NEIN |
Im Paket „ggpp“ definierte Geometrien. Für diese Geometrien sowie für geom_text()
und geom_label()
gibt es 1 NPC-Versionen, die hauptsächlich für Plotanmerkungen verwendet werden.
Im Gegensatz zu den Positionsfunktionen aus „ggplot2“ sind alle Positionsfunktionen aus dem Paket „ggpp“ in der Lage, die ursprünglichen x- und y -Koordinaten unter einem anderen Namen im data
zu behalten, wenn sie an eine neue Position verschoben werden. Dadurch sind sie mit geom_text_s()
, geom_label_s()
, geom_point_s()
, geom_table()
, geom_plot()
und geom_grob()
aus diesem Paket kompatibel. Alle diese Geoms können Segmente oder Pfeile zeichnen, die die ursprünglichen Positionen mit den verschobenen Positionen verbinden. Sie bleiben abwärtskompatibel und können in allen Geometrien verwendet werden, die einen position
haben. Dies ähnelt dem im Paket „ggrepel“ (<= 0.9.1) verwendeten Ansatz, verwendet jedoch eine andere Namenskonvention, die es ermöglicht, dass die neuen Positionsfunktionen abwärtskompatibel mit „ggplot2“ bleiben. Ab Version 0.9.2 sind die Geometrien geom_text_repel()
und geom_label_repel()
aus dem Paket „ggrepel“ vollständig mit dieser neuen Namenskonvention kompatibel.
Die Positionsfunktionen position_nudge_keep()
, position_nudge_to()
, position_nudge_center()
und position_nudge_line()
implementieren verschiedene Nudging-Varianten. Die letzten beiden Funktionen ermöglichen die Anwendung von Nudging, das automatisch entsprechend der relativen Position von Datenpunkten in Bezug auf beliebige Punkte oder Linien oder in Bezug auf ein Polynom oder einen Glättungs-Spline variiert, der im laufenden Betrieb an die Beobachtungen angepasst wird.
Die Positionsfunktionen position_stacknudge()
, position_fillnudge()
, position_jitternudge()
, position_dodgenudge()
und position_dodge2nudge()
kombinieren jeweils die Rollen zweier Positionsfunktionen . Sie ermöglichen das einfache Verschieben von Beschriftungen in Plotebenen, die Stapelung, Ausweichen oder Jitter verwenden. Die Funktionen position_jitter_keep()
, position_stack_keep()
, position_fill_keep()
, position_dodge_keep()
, position_dosge2_keep()
verhalten sich wie die Positionen aus 'ggplot2', behalten aber im data
die ursprünglichen Koordinaten bei.
Position | Hauptverwendung | Verschiebung | Am häufigsten verwendet mit |
---|---|---|---|
position_nudge_keep() | Schubs | x, y (fester Abstand) | Datenbeschriftungen |
position_jitter_keep() | Jitter | x, y (zufällig) | Punktdiagramme |
position_stack_keep() | Stapel | vertikal (absolut) | Säulen- und Balkendiagramme |
position_stack_minmax() | Stapel | vertikal (absolut) | Fehlerbalken |
position_fill_keep() | füllen | vertikal (relativ, gebrochen) | Säulendiagramme |
position_dodge_keep() | ausweichen | seitwärts (absolut) | Säulen- und Balkendiagramme |
position_dosge2_keep() | ausweichen2 | seitwärts (absolut) | Boxplots |
position_nudge_to() | Schubs | x, y (feste Position) | Datenbeschriftungen |
position_nudge_center() | Schubs | x, y (vom Ziel weg oder auf das Ziel zu) | Datenbeschriftungen |
position_nudge_line() | Schubs | x, y (vom Ziel weg oder auf das Ziel zu) | Datenbeschriftungen |
position_stacknudge() | stapeln + anstoßen | kombiniert, siehe oben | Datenbeschriftungen in Säulendiagrammen |
position_fillnudge() | füllen + anstupsen | kombiniert, siehe oben | Datenbeschriftungen in Säulendiagrammen |
position_jitternudge() | Jitter + Anstoß | kombiniert, siehe oben | Datenbeschriftungen in Punktdiagrammen |
position_dodgenudge() | ausweichen + anstupsen | kombiniert, siehe oben | Datenbeschriftungen in Säulendiagrammen |
position_dodge2nudge() | ausweichen2 + anstupsen | kombiniert, siehe oben | Datenbeschriftungen in Boxplots |
Im Paket „ggpp“ definierte Positionsfunktionen.
Die Statistik stat_fmt_tb()
hilft bei der Formatierung von Tabellen, die mit geom_table()
geplottet werden sollen.
Vier Statistiken, stat_dens2d_filter()
, stat_dens2d_label()
, stat_dens1d_filter()
und stat_dens1d_label()
, implementieren das Markieren oder selektive Beschriften von Beobachtungen basierend auf der lokalen 2D-Beobachtungsdichte in einem Panel. Zwei weitere Statistiken, stat_dens1d_filter_g()
und stat_dens1d_filter_g()
berechnen die Dichte nach Gruppe statt nach Plotpanel. Diese sechs Statistiken sind so konzipiert, dass sie gut mit geom_text_repel()
und geom_label_repel()
aus dem Paket „ggrepel“ (>= 0.8.0) zusammenarbeiten.
Die Statistiken stat_apply_panel()
und stat_apply_group()
sind nützlich für die Anwendung beliebiger Funktionen, die numerische Vektoren wie cumsum()
, cummax()
und diff()
zurückgeben. Die Statistiken stat_centroid()
und stat_summary_xy()
ermöglichen die Berechnung von Zusammenfassungen sowohl für x als auch für y und deren Übergabe an ein Geom.
Die Statistiken stat_quadrant_counts()
und stat_panel_counts()
erleichtern das Kommentieren von Diagrammen mit der Anzahl der Beobachtungen.
Statistik | Hauptverwendung | Übliche Geometrien | Am häufigsten verwendet mit | Rechenfunktion |
---|---|---|---|---|
stat_fmt_tb() | Formatierung und Auswahl | geom_table() | Tabellen als Datenbeschriftungen | Gruppe |
stat_fmt_tb() | Formatierung und Auswahl | geom_table_npc() | Tabellen als Anmerkungen | Gruppe |
stat_dens2d_filter() | lokale 2D-Dichtefilterung | geom_text_s() , geom_label_s() , geom_text() , geom_label() | Text als Datenbeschriftung | Panel |
stat_dens2d_label() | lokale 2D-Dichtefilterung | geom_text_repel() , geom_label_repel() | Text als Datenbeschriftung | Panel |
stat_dens1d_filter() | lokale 1D-Dichtefilterung | geom_text_s() , geom_label_s() , geom_text() , geom_label() | Text als Datenbeschriftung | Panel |
stat_dens1d_label() | lokale 1D-Dichtefilterung | geom_text_repel() , geom_label_repel() | Text als Datenbeschriftung | Panel |
stat_dens2d_filter_g() | lokale 2D-Dichtefilterung | geom_text_s() , geom_label_s() , geom_text() , geom_label() | Text als Datenbeschriftung | Gruppe |
stat_dens2d_label_g() | lokale 2D-Dichtefilterung | geom_text_repel() , geom_label_repel() | Text als Datenbeschriftung | Gruppe |
stat_dens1d_filter_g() | lokale 1D-Dichtefilterung | geom_text_s() , geom_label_s() , geom_text() , geom_label() | Text als Datenbeschriftung | Gruppe |
stat_dens1d_label_g() | lokale 1D-Dichtefilterung | geom_text_repel() , geom_label_repel() | Datenbeschriftungen | Gruppe |
stat_panel_counts() | Anzahl der Beobachtungen | geom_text() , geom_label() | Text als Anmerkung | Panel |
stat_group_counts() | Anzahl der Beobachtungen | geom_text() , geom_label() | Text als Anmerkung | Panel |
stat_quadrant_counts() | Anzahl der Beobachtungen | geom_text() , geom_label() | Text als Anmerkung | Panel |
stat_apply_panel() | kumulative Zusammenfassungen | geom_point() , geom_line() usw. | Streu- und Liniendiagramme | Panel |
stat_apply_group() | kumulative Zusammenfassungen | geom_point() , geom_line() usw. | Streu- und Liniendiagramme | Gruppe |
stat_centroid() | gemeinsame x- und y-Zusammenfassungen | geom_point() , geom_rug() , geom_margin_arrow() usw. | Datenzusammenfassung | Gruppe |
stat_summary_xy() | gemeinsame x- und y-Zusammenfassungen | geom_point() , geom_rug() , geom_margin_arrow() usw. | Datenzusammenfassung | Gruppe |
stat_functions() | Berechnen Sie y aus dem x-Bereich | geom_line() , geom_point() usw. | Funktionskurven zeichnen | Gruppe |
Im Paket „ggpp“ definierte Statistiken.
Die Ausrichtungen "outward_mean"
, "inward_mean"
, "outward_median"
und "inward_median"
implementieren eine Ausrichtung nach außen und innen relativ zum Schwerpunkt der Daten statt zur Mitte der Daten "position"
implementiert die Ausrichtung an der Kante, die der ursprünglichen Position am nächsten liegt. Dies funktioniert nur zusammen mit Positionsfunktionen, die den ursprünglichen Standort mithilfe der in „ggpp“ implementierten Namenskonvention speichern. Andernfalls wird die Standardausrichtung auf "center"
/ "middle"
zurückgesetzt.
Dieses Paket ist ein „Spin-off“ des Pakets „ggpmisc“, das Erweiterungen der Grammatik enthält, die ursprünglich für die Verwendung mit „ggpmisc“ geschrieben wurde. Da „ggpmisc“ immer größer wurde, war es notwendig, es in zwei Pakete aufzuteilen, um die Entwicklung und Wartung zu vereinfachen und den Import in andere Pakete zu erleichtern. Derzeit importiert das Paket „ggpmisc“ alle sichtbaren Definitionen aus „ggpp“ und exportiert sie erneut.
Die folgenden Diagramme veranschaulichen einige der Dinge, die „ggpp“ im Vergleich zur alleinigen Verwendung von „ggplot“ ermöglicht oder einfacher zu programmieren macht. Weitere Beispiele, darunter mehrere Kombinationen von „ggpp“ und „ggrepel“, finden Sie in der Paketvignette.
library( ggpp )
library( ggrepel )
library( dplyr )
Ein Diagramm mit eingefügter Tabelle.
mtcars % > %
group_by( cyl ) % > %
summarize( wt = mean( wt ), mpg = mean( mpg )) % > %
ungroup() % > %
mutate( wt = sprintf( " %.2f " , wt ),
mpg = sprintf( " %.1f " , mpg )) - > tb
df <- tibble( x = 5.45 , y = 34 , tb = list ( tb ))
ggplot( mtcars , aes( wt , mpg , colour = factor ( cyl ))) +
geom_point() +
geom_table( data = df , aes( x = x , y = y , label = tb ))
Ein Grundstück mit eingefügtem Grundstück.
Eingefügtes Diagramm, positioniert unter Verwendung nativer Diagrammkoordinaten (npc) unter Verwendung numerischer Werte im Bereich 0..1 zusammen mit I()
.
p <- ggplot( mtcars , aes( factor ( cyl ), mpg , colour = factor ( cyl ))) +
stat_boxplot() +
labs( y = NULL , x = " Engine cylinders (number) " ) +
theme_bw( 9 ) + theme( legend.position = " none " )
ggplot( mtcars , aes( wt , mpg , colour = factor ( cyl ))) +
geom_point( show.legend = FALSE ) +
annotate( " plot " , x = I( 0.05 ), y = I( 0.05 ), label = p ,
hjust = " inward " , vjust = " inward " ) +
expand_limits( y = 0 , x = 0 )
Mittelwerte, die spontan berechnet und als Sternchen angezeigt werden.
ggplot( mtcars , aes( wt , mpg , colour = factor ( cyl ))) +
geom_point() +
stat_centroid( shape = " asterisk " , size = 6 )
Im laufenden Betrieb berechnete Mediane werden als Randpfeile angezeigt. Beschriftungen mit der Anzahl der Beobachtungen pro Gruppe.
ggplot( mtcars , aes( wt , mpg , colour = factor ( cyl ))) +
geom_point() +
stat_centroid( geom = " y_margin_arrow " , .fun = median ,
aes( yintercept = after_stat( y )), arrow.length = 0.05 ) +
stat_group_counts( vstep = 0 , hstep = 0.09 )
df <- data.frame ( x1 = c( 1 , 2 , 1 , 3 , - 1 ),
x2 = c( " a " , " a " , " b " , " b " , " b " ),
grp = c( " some long name " , " other name " , " some name " ,
" another name " , " a name " ))
# Add labels to a horizontal column plot (stacked by default)
ggplot( data = df , aes( x2 , x1 , group = grp )) +
geom_col(aes( fill = grp ), width = 0.5 ) +
geom_hline( yintercept = 0 ) +
geom_text(
aes( label = grp ),
position = position_stacknudge( vjust = 1 , y = - 0.2 )) +
theme( legend.position = " none " )
Installation der neuesten stabilen Version von CRAN (Quellen, Mac- und Win-Binärdateien):
install.packages( " ggpp " )
Installation der aktuellen instabilen Version aus dem CRAN-ähnlichen Repository von R-Universe (Binärdateien für Mac, Win, Webassembly und Linux sowie verfügbare Quellen):
install.packages( ' ggpp ' ,
repos = c( ' https://aphalo.r-universe.dev ' ,
' https://cloud.r-project.org ' ))
Installation der aktuellen instabilen Version von GitHub (aus Quellen):
# install.packages("devtools")
devtools :: install_github( " aphalo/ggpp " )
Die HTML-Dokumentation für das Paket, einschließlich Hilfeseiten und dem Benutzerhandbuch , ist unter (https://docs.r4photobiology.info/ggpp/) verfügbar.
Neuigkeiten zu Updates werden unter (https://www.r4photobiology.info/) veröffentlicht.
Kapitel 7 in Aphalo (2020) und Kapitel 9 in Aphalo (2024) erläutern grundlegende Konzepte der Grammatik von Grafiken, wie sie in „ggplot2“ implementiert sind, sowie Erweiterungen dieser Grammatik, einschließlich einiger derjenigen, die durch die Pakete „ggpp“ und „ggpmisc“ verfügbar gemacht werden '. Informationen zum Buch finden Sie unter https://www.learnr-book.info/.
Bitte melden Sie Fehler und fordern Sie neue Funktionen an unter (https://github.com/aphalo/ggpp/issues). Pull-Anfragen sind willkommen unter (https://github.com/aphalo/ggpp).
Wenn Sie dieses Paket zur Erstellung wissenschaftlicher oder kommerzieller Publikationen nutzen, zitieren Sie bitte nach:
citation( " ggpp " )
# > To cite package 'ggpp' in publications use:
# >
# > Aphalo P (2024). _ggpp: Grammar Extensions to 'ggplot2'_. R package
# > version 0.5.8-1, <https://CRAN.R-project.org/package=ggpp>.
# >
# > A BibTeX entry for LaTeX users is
# >
# > @Manual{,
# > title = {ggpp: Grammar Extensions to 'ggplot2'},
# > author = {Pedro J. Aphalo},
# > year = {2024},
# > note = {R package version 0.5.8-1},
# > url = {https://CRAN.R-project.org/package=ggpp},
# > }
Da es sich um eine Erweiterung des Pakets „ggplot2“ handelt, wurde ein Teil des Codes im Paket „ggpp“ erstellt, indem als Vorlage die Funktionen und Skalierungen der Ebene in „ggplot2“ verwendet wurden. Die Benutzeroberfläche von „ggpp“ zielt darauf ab, möglichst konsistent mit „ggplot2“ und der geschichteten Grammatik von Grafiken zu sein (Wickham 2010). In „ggplot2“ hinzugefügte neue Funktionen werden hinzugefügt, wenn sie für „ggpp“ relevant sind, z. B. Unterstützung für orientation
beim Spiegeln von Ebenen. Dieses Paket enthält folglich indirekt bedeutende Beiträge mehrerer Autoren und Betreuer von „ggplot2“, aufgeführt unter (https://ggplot2.tidyverse.org/).
Die Koordinierung der Entwicklung durch einen freundschaftlichen Ideenaustausch und gegenseitige Beiträge von Kamil Slowikowski zu „ggpp“ und von mir zu „ggrepel“ hat dazu geführt, dass die beiden Pakete vollständig kompatibel sind.
Aphalo, Pedro J. (2024) Lernen Sie R: Als Sprache. 2ed. Die R-Serie. Boca Raton und London: Chapman und Hall/CRC Press. ISBN: 9781032516998. 466 Seiten.
Aphalo, Pedro J. (2020) Lernen Sie R: Als Sprache. 1ed. Die R-Serie. Boca Raton und London: Chapman und Hall/CRC Press. ISBN: 9780367182533. 350 Seiten.
Wickham, Hadley. 2010. „Eine vielschichtige Grammatik der Grafik.“ Journal of Computational and Graphical Statistics 19 (1): 3–28. https://doi.org/10.1198/jcgs.2009.07098.
© 2016-2024 Pedro J. Aphalo ([email protected]). Veröffentlicht unter der GPL, Version 2 oder höher. Für diese Software wird keinerlei Gewährleistung übernommen.