Paket ' ggpp ' menyediakan sekumpulan blok penyusun yang memperluas Tata Bahasa Grafik yang diimplementasikan dalam paket 'ggplot2' (>= 3.5.0). Ekstensi ini meningkatkan dukungan label data dan anotasi dalam plot. Fungsi posisi menerapkan pendekatan baru untuk mendorong yang dapat digunakan dengan geometri apa pun, namun khususnya berguna bersama dengan geom_text_s()
dan geom_label_s()
dari paket ini dan geom_text_repel()
dan geom_label_repel()
dari paket 'ggrepel' (>= 0.9.2). Lihat: (https://ggrepel.slowkow.com) untuk petunjuk instalasi dan berita tentang rilis.
Koordinat Induk yang Dinormalisasi (NPC) didukung secara asli oleh 'ggplot2' >= 3.5.0 melalui fungsi identitas R I()
. Pendekatan baru ini tidak memerlukan geometri khusus karena dapat diterapkan pada hampir semua geometri yang ada. Namun, saat ini hal ini hanya berfungsi jika variabel kontinu dipetakan ke estetika x dan/atau y . Jika mekanisme ini diperluas ke faktor pendukung dan variabel diskrit lainnya di masa depan, semua geometri _npc
dari 'ggpp' bisa menjadi mubazir. Sementara itu, geometri khusus dari 'ggpp' masih mengisi celah, meskipun lebih kecil, dalam mendukung NPC oleh 'ggplot2'.
Perbedaan antara observasi atau data yang dipetakan ke estetika x dan y serta label data adalah bahwa label data dihubungkan dengan koordinat data, namun lokasinya biasanya dekat tetapi tidak persis dengan datanya. Dengan kata lain letak label data pada koordinat x dan y bersifat fleksibel selama kaitannya dengan observasi data dapat disimpulkan. Dalam hal anotasi, lokasi pada area plot bersifat sewenang-wenang, ditentukan oleh pertimbangan desain grafis yang tersedia dan persyaratan untuk tidak menutup pengamatan data. Pada tabel di bawah ini kami mencantumkan geometri yang ditentukan dalam paket 'ggpp': 1) apakah geometri tersebut dimaksudkan untuk label data, anotasi, atau data, 2) estetika dan estetika semu yang dipatuhinya, dan 3) apakah geometri tersebut dapat menghubungkan aslinya posisi data ke posisi terlantar. Penggambaran segmen atau panah penghubung antara posisi yang dipindahkan dan posisi semula, yaitu observasi dan label yang dipindahkan, juga memerlukan perubahan pada data yang dikembalikan oleh fungsi posisi (lihat bagian berikutnya).
Geometri | Penggunaan utama | Estetika | Segmen |
---|---|---|---|
geom_text_s() | label data | x, y, label, ukuran, keluarga, bentuk font, warna, alfa, grup, sudut, vjust, hjust | Ya |
geom_label_s() | label data | x, y, label, ukuran, keluarga, Font face, warna, mengisi, alfa, linewidth, linetype, kelompok, vjust, hjust | Ya |
geom_text_pairwise() | label data | x, xmin, Xmax, y, label, ukuran, keluarga, wajah Font, warna, alfa, kelompok, sudut, vjust, hjust | cakrawala. |
geom_label_pairwise() | label data | x, xmin, Xmax, y, label, ukuran, keluarga, Font face, warna, mengisi, alfa, linewidth, linetype, kelompok, vjust, hjust | cakrawala. |
geom_point_s() | label data | x, y, ukuran, warna, isi, alfa, bentuk, guratan, grup | Ya |
geom_table() 1 | label data | x, y, label, ukuran, keluarga, bentuk font, warna, alfa, grup, sudut, vjust, hjust | Ya |
geom_plot() 1 , geom_grob() 1 | label data | x, y, label, grup, sudut, vjust, hjust | Ya |
geom_margin_arrow() | label data, label skala, data | xintercept, yintercept, label, ukuran, keluarga, wajah font, warna, alfa, kelompok, vjust, hjust | TIDAK |
geom_margin_point() | label data, label skala, data | xintercept, yintercept, label, ukuran, keluarga, wajah font, warna, alfa, kelompok, vjust, hjust | TIDAK |
geom_margin_grob() | label data, label skala, data | xintercept, yintercept, label, ukuran, keluarga, wajah font, warna, alfa, kelompok, vjust, hjust | TIDAK |
geom_quadrant_lines() , geom_vhlines() | label data, label skala, data | xintercept, yintercept, label, ukuran, keluarga, wajah font, warna, alfa, kelompok, vjust, hjust | TIDAK |
Geometri didefinisikan dalam paket 'ggpp'. Ada 1 versi NPC untuk geometri ini, serta untuk geom_text()
dan geom_label()
, yang digunakan terutama untuk anotasi plot.
Berbeda dengan fungsi posisi dari 'ggplot2', semua fungsi posisi dari paket 'ggpp' mampu mempertahankan koordinat x dan y asli dengan nama berbeda pada objek data
saat memindahkannya ke posisi baru. Hal ini membuatnya kompatibel dengan geom_text_s()
, geom_label_s()
, geom_point_s()
, geom_table()
, geom_plot()
dan geom_grob()
dari paket ini. Semua geom ini dapat menggambar segmen atau panah yang menghubungkan posisi awal dengan posisi yang dipindahkan. Mereka tetap kompatibel dan dapat digunakan di semua geometri yang memiliki parameter formal position
. Pendekatan ini mirip dengan pendekatan yang digunakan dalam paket 'ggrepel' (<= 0.9.1) namun menggunakan konvensi penamaan berbeda yang memungkinkan fungsi posisi baru tetap kompatibel dengan 'ggplot2'. Mulai dari versi 0.9.2 geometri geom_text_repel()
dan geom_label_repel()
dari paket 'ggrepel' sepenuhnya kompatibel dengan konvensi penamaan baru ini.
Fungsi posisi position_nudge_keep()
, position_nudge_to()
, position_nudge_center()
dan position_nudge_line()
mengimplementasikan jenis dorongan yang berbeda. Dua fungsi terakhir memungkinkan penerapan dorongan yang bervariasi secara otomatis sesuai dengan posisi relatif titik data terhadap titik atau garis sembarang, atau terhadap polinomial atau spline penghalusan yang dipasang langsung ke pengamatan.
Fungsi posisi position_stacknudge()
, position_fillnudge()
, position_jitternudge()
, position_dodgenudge()
dan position_dodge2nudge()
menggabungkan masing-masing peran dari dua fungsi posisi . Mereka memungkinkan untuk dengan mudah menyenggol label di lapisan plot yang menggunakan penumpukan, penghindaran, atau jitter. Fungsi position_jitter_keep()
, position_stack_keep()
, position_fill_keep()
, position_dodge_keep()
, position_dosge2_keep()
berperilaku seperti posisi dari 'ggplot2' tetapi tetap mempertahankan koordinat aslinya dalam objek data
.
Posisi | Penggunaan utama | Pemindahan | Paling banyak digunakan dengan |
---|---|---|---|
position_nudge_keep() | dorongan | x, y (jarak tetap) | label data |
position_jitter_keep() | naik opelet | x, y (acak) | plot titik |
position_stack_keep() | tumpukan | vertikal (mutlak) | plot kolom dan batang |
position_stack_minmax() | tumpukan | vertikal (mutlak) | bilah kesalahan |
position_fill_keep() | mengisi | vertikal (relatif, pecahan) | plot kolom |
position_dodge_keep() | menghindari | ke samping (mutlak) | plot kolom dan batang |
position_dosge2_keep() | menghindar2 | ke samping (mutlak) | plot kotak |
position_nudge_to() | dorongan | x, y (posisi tetap) | label data |
position_nudge_center() | dorongan | x, y (menjauh atau menuju target) | label data |
position_nudge_line() | dorongan | x, y (menjauh atau menuju target) | label data |
position_stacknudge() | tumpukan + dorongan | digabungkan, lihat di atas | label data dalam plot kolom |
position_fillnudge() | isi + dorongan | digabungkan, lihat di atas | label data dalam plot kolom |
position_jitternudge() | jitter + dorongan | digabungkan, lihat di atas | label data dalam plot titik |
position_dodgenudge() | menghindar + menyenggol | digabungkan, lihat di atas | label data dalam plot kolom |
position_dodge2nudge() | dodge2 + dorongan | digabungkan, lihat di atas | label data dalam plot kotak |
Fungsi posisi ditentukan dalam paket 'ggpp'.
Statistik stat_fmt_tb()
membantu pemformatan tabel yang akan diplot dengan geom_table()
.
Empat statistik, stat_dens2d_filter()
, stat_dens2d_label()
, stat_dens1d_filter()
dan stat_dens1d_label()
, menerapkan penandaan atau pelabelan selektif observasi berdasarkan kepadatan observasi 2D lokal dalam sebuah panel. Dua statistik lainnya, stat_dens1d_filter_g()
dan stat_dens1d_filter_g()
menghitung kepadatan berdasarkan kelompok, bukan berdasarkan panel plot. Keenam statistik ini dirancang untuk bekerja sama dengan baik dengan geom_text_repel()
dan geom_label_repel()
dari paket 'ggrepel' (>= 0.8.0).
Statistik stat_apply_panel()
dan stat_apply_group()
berguna untuk menerapkan fungsi arbitrer yang mengembalikan vektor numerik seperti cumsum()
, cummax()
dan diff()
. Statistik stat_centroid()
dan stat_summary_xy()
memungkinkan penghitungan ringkasan pada x dan y dan meneruskannya ke geom.
Statistik stat_quadrant_counts()
dan stat_panel_counts()
memudahkan untuk membuat anotasi plot dengan jumlah observasi.
Statistik | Penggunaan utama | Geometri biasa | Paling banyak digunakan dengan | Fungsi komputasi |
---|---|---|---|---|
stat_fmt_tb() | pemformatan dan seleksi | geom_table() | tabel sebagai label data | kelompok |
stat_fmt_tb() | pemformatan dan seleksi | geom_table_npc() | tabel sebagai anotasi | kelompok |
stat_dens2d_filter() | penyaringan kepadatan 2D lokal | geom_text_s() , geom_label_s() , geom_text() , geom_label() | teks sebagai label data | panel |
stat_dens2d_label() | penyaringan kepadatan 2D lokal | geom_text_repel() , geom_label_repel() | teks sebagai label data | panel |
stat_dens1d_filter() | penyaringan kepadatan 1D lokal | geom_text_s() , geom_label_s() , geom_text() , geom_label() | teks sebagai label data | panel |
stat_dens1d_label() | penyaringan kepadatan 1D lokal | geom_text_repel() , geom_label_repel() | teks sebagai label data | panel |
stat_dens2d_filter_g() | penyaringan kepadatan 2D lokal | geom_text_s() , geom_label_s() , geom_text() , geom_label() | teks sebagai label data | kelompok |
stat_dens2d_label_g() | penyaringan kepadatan 2D lokal | geom_text_repel() , geom_label_repel() | teks sebagai label data | kelompok |
stat_dens1d_filter_g() | penyaringan kepadatan 1D lokal | geom_text_s() , geom_label_s() , geom_text() , geom_label() | teks sebagai label data | kelompok |
stat_dens1d_label_g() | penyaringan kepadatan 1D lokal | geom_text_repel() , geom_label_repel() | label data | kelompok |
stat_panel_counts() | sejumlah observasi | geom_text() , geom_label() | teks sebagai anotasi | panel |
stat_group_counts() | sejumlah observasi | geom_text() , geom_label() | teks sebagai anotasi | panel |
stat_quadrant_counts() | sejumlah observasi | geom_text() , geom_label() | teks sebagai anotasi | panel |
stat_apply_panel() | ringkasan kumulatif | geom_point() , geom_line() , dll. | plot sebar dan garis | panel |
stat_apply_group() | ringkasan kumulatif | geom_point() , geom_line() , dll. | plot sebar dan garis | kelompok |
stat_centroid() | ringkasan gabungan x dan y | geom_point() , geom_rug() , geom_margin_arrow() , dll. | ringkasan data | kelompok |
stat_summary_xy() | ringkasan gabungan x dan y | geom_point() , geom_rug() , geom_margin_arrow() , dll. | ringkasan data | kelompok |
stat_functions() | menghitung y dari rentang x | geom_line() , geom_point() , dll. | menggambar kurva fungsi | kelompok |
Statistik ditentukan dalam paket 'ggpp'.
Justifikasi "outward_mean"
, "inward_mean"
, "outward_median"
dan "inward_median"
menerapkan pembenaran ke luar dan ke dalam relatif terhadap pusat massa data, bukan ke pusat data "position"
menerapkan justifikasi pada tepi yang paling dekat dengan posisi semula. Ini hanya berfungsi bersama dengan fungsi posisi yang menyimpan lokasi asli menggunakan konvensi penamaan yang diterapkan di 'ggpp', jika tidak, pembenaran default akan kembali ke "center"
/ "middle"
.
Paket ini merupakan “spin-off” dari paket 'ggpmisc' yang berisi perluasan tata bahasa yang awalnya ditulis untuk digunakan dengan 'ggpmisc'. Karena ukuran 'ggpmisc' semakin besar, pemisahannya menjadi dua paket diperlukan untuk memudahkan pengembangan dan pemeliharaan serta untuk memfasilitasi impor ke paket lain. Untuk saat ini, paket 'ggpmisc' mengimpor dan mengekspor ulang semua definisi yang terlihat dari 'ggpp'.
Plot di bawah ini menunjukkan beberapa hal yang memungkinkan atau mempermudah pembuatan kode 'ggpp' dibandingkan dengan 'ggplot' yang digunakan sendiri. Contoh tambahan termasuk beberapa penggabungan 'ggpp' dan 'ggrepel' disediakan dalam sketsa paket.
library( ggpp )
library( ggrepel )
library( dplyr )
Plot dengan tabel sisipan.
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 ))
Plot dengan plot sisipan.
Inset plot diposisikan menggunakan koordinat plot asli (npc) menggunakan nilai numerik dalam rentang 0..1 bersama dengan 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 )
Berarti dihitung dengan cepat dan ditampilkan sebagai tanda bintang.
ggplot( mtcars , aes( wt , mpg , colour = factor ( cyl ))) +
geom_point() +
stat_centroid( shape = " asterisk " , size = 6 )
Median yang dihitung dengan cepat ditampilkan sebagai panah marginal. Label dengan jumlah observasi per kelompok.
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 " )
Instalasi versi stabil terbaru dari CRAN (sumber, binari Mac dan Win):
install.packages( " ggpp " )
Instalasi versi tidak stabil saat ini dari repositori mirip R-Universe CRAN (biner untuk Mac, Win, Webassembly, dan Linux, serta sumber yang tersedia):
install.packages( ' ggpp ' ,
repos = c( ' https://aphalo.r-universe.dev ' ,
' https://cloud.r-project.org ' ))
Pemasangan versi tidak stabil saat ini dari GitHub (dari sumber):
# install.packages("devtools")
devtools :: install_github( " aphalo/ggpp " )
Dokumentasi HTML untuk paket tersebut, termasuk halaman bantuan dan Panduan Pengguna , tersedia di (https://docs.r4photobiology.info/ggpp/).
Berita tentang pembaruan diposting di (https://www.r4photobiology.info/).
Bab 7 di Aphalo (2020) dan Bab 9 di Aphalo (2024) menjelaskan konsep dasar tata bahasa grafis seperti yang diterapkan di 'ggplot2' serta perluasan tata bahasa ini termasuk beberapa di antaranya yang disediakan oleh paket 'ggpp' dan 'ggpmisc '. Informasi terkait buku tersedia di https://www.learnr-book.info/.
Silakan laporkan bug dan minta fitur baru di (https://github.com/aphalo/ggpp/issues). Permintaan penarikan diterima di (https://github.com/aphalo/ggpp).
Jika Anda menggunakan paket ini untuk menghasilkan publikasi ilmiah atau komersial, harap mengutip sesuai dengan:
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},
# > }
Sebagai perpanjangan dari paket 'ggplot2', beberapa kode dalam paket 'ggpp' telah dibuat dengan menggunakan templat yang berasal dari fungsi lapisan dan skala di 'ggplot2'. Antarmuka pengguna 'ggpp' bertujuan untuk menjadi sekonsisten mungkin dengan 'ggplot2' dan tata bahasa grafis berlapis (Wickham 2010). Fitur baru yang ditambahkan di 'ggplot2' ditambahkan jika relevan dengan 'ggpp', seperti dukungan orientation
untuk membalik lapisan. Oleh karena itu, paket ini secara tidak langsung menyertakan kontribusi signifikan dari beberapa penulis dan pengelola 'ggplot2', yang tercantum di (https://ggplot2.tidyverse.org/).
Koordinasi pembangunan melalui pertukaran ide dan kontribusi timbal balik yang dilakukan oleh Kamil Slowikowski kepada 'ggpp' dan saya sendiri kepada 'ggrepel' telah menjadikan kedua paket tersebut sepenuhnya saling kompatibel.
Aphalo, Pedro J. (2024) Belajar R: Sebagai Bahasa. 2ed. Seri R. Boca Raton dan London: Chapman dan Hall/CRC Press. ISBN: 9781032516998. 466 hal.
Aphalo, Pedro J. (2020) Belajar R: Sebagai Bahasa. 1ed. Seri R. Boca Raton dan London: Chapman dan Hall/CRC Press. ISBN: 9780367182533. 350 hal.
Wickham, Hadley. 2010. “Tata Bahasa Berlapis.” Jurnal Statistik Komputasi dan Grafis 19 (1): 3–28. https://doi.org/10.1198/jcgs.2009.07098.
© 2016-2024 Pedro J. Aphalo ([email protected]). Dirilis di bawah GPL, versi 2 atau lebih tinggi. Perangkat lunak ini tidak memberikan jaminan apa pun.