Bantuan Mosaic Plot di R
Plot saya saat ini: Plot yang
Secara khusus: variabel penjelas di bagian bawah dengan sumbu x, variabel respons di sebelah kanan, frekuensi relatif, dan sumbu y di sebelah kiri . Saya akan melampirkan kode R saya di bawah ini.
mosaictable <- matrix (c (3, 9, 22, 21), byrow = T, ncol = 2)
rownames (mosaictable) = c ("White", "Blue ")
colnames (mosaictable) = c ("Captured", "Not Captured")
mosaicplot ((mosaictable), sub = "Pigeon Color", ylab = "Relative frequency",
col = c ("firebrick", "goldenrod1"), font = 2, main = "Mosaic Plot of Pigeon Color and Their Capture Rate"
)
axis (1)
axis (4)
Jawaban
Ragam tampilan mosaik tertentu yang memiliki variabel "dependen" pada sumbu y dan ingin menambahkan anotasi terkait, terkadang juga disebut "plot tulang belakang". R mengimplementasikan ini dalam spineplot()fungsinya. Juga plot(y ~ x)memanggil secara internal spineplot()saat keduanya ydan xbersifat kategoris.
Dalam kasus Anda, spineplot()melakukan hampir semua yang Anda inginkan secara otomatis asalkan Anda menyediakannya dengan "table"objek yang diformat dengan baik :
tab <- as.table(matrix(c(3, 22, 9, 21), ncol = 2))
dimnames(tab) <- list(
"Pigeon Color" = c("White", "Blue"),
"Relative Frequency" = c("Captured", "Not Captured")
)
tab
## Relative Frequency
## Pigeon Color Captured Not Captured
## White 3 9
## Blue 22 21
Dan kemudian Anda mendapatkan:
spineplot(tab)
Secara pribadi, saya akan berhenti di situ. Tetapi jika sangat penting untuk mengganti label sumbu dari kiri ke kanan dan sebaliknya, maka Anda dapat melakukannya dengan menekan terlebih dahulu axes = FALSElalu menambahkannya secara manual setelahnya. Koordinat untuk itu perlu diperoleh dari distribusi marginal variabel pertama dan distribusi bersyarat dari variabel kedua yang diberikan variabel pertama.
x <- prop.table(margin.table(tab, 1))
y <- prop.table(tab, 1)[2, ]
spineplot(tab, col = c("firebrick", "goldenrod1"), axes = FALSE)
axis(1, at = c(0, x[1]) + x/2, labels = rownames(tab), tick = FALSE)
axis(2)
axis(4, at = c(0, y[1]) + y/2, labels = colnames(tab), tick = FALSE)