plot() Adalah Fungsi Grafik Serba Bisa di R
Untuk membuat plot di R, panggil plot(x, y) dengan dua vector numerik yang panjangnya sama. R menggambar satu titik untuk setiap pasangan, vector pertama di sepanjang sumbu horizontal dan vector kedua di sepanjang sumbu vertikal, lalu memberi label sumbu dengan nama variabelnya secara otomatis:
x <- 1:12
y <- c(2, 5, 4, 8, 9, 12, 11, 15, 14, 18, 17, 21)
plot(x, y)
Hasilnya sebaran dua belas lingkaran berongga yang terus naik seiring bertambahnya x. Hanya itu syaratnya: tidak ada package yang perlu diinstal, tidak ada persiapan. plot() sudah ada di R dasar dan menjadi fungsi di balik sebagian besar grafik eksplorasi yang cepat.
Karena runner kode di halaman ini hanya menampilkan output teks, panggilan plot di artikel ini berupa potongan kode statis. Tempelkan ke RStudio atau sesi R lokal mana pun untuk melihat gambarnya. Yang bisa kamu jalankan di sini adalah persiapan datanya. Itu memang kebiasaan yang baik: lihat angkanya sebelum kamu membuat grafiknya.
Kalau kamu hanya memberikan satu vector, plot(y) memakai posisi indeks 1, 2, 3, ... sebagai sumbu horizontal, praktis untuk melihat sekilas serangkaian pengukuran.
Memilih Tipe Plot
Argumen type menentukan cara pasangan-pasangan itu digambar:
plot(x, y, type = "p") # points (the default)
plot(x, y, type = "l") # a connected line
plot(x, y, type = "b") # both: points joined by line segments
plot(x, y, type = "h") # vertical bars from zero, like a spike chart
plot(x, y, type = "s") # a step function
type = "l" mengubah sebaran menjadi grafik garis, yang kamu butuhkan untuk apa pun yang diukur dari waktu ke waktu. type = "b" tetap menampilkan setiap observasi sambil memperlihatkan trennya. type = "h" menggambar segmen vertikal tipis dari nol sampai setiap nilai, dan type = "s" menggambar anak tangga yang menahan setiap nilai sampai nilai berikutnya, berguna untuk besaran yang berubah secara melompat, seperti harga atau jumlah stok.
Judul, Label, dan Warna
Plot tanpa label hanyalah catatan pribadi untuk dirimu sendiri. Tiga argumen memperbaikinya: main untuk judul, xlab dan ylab untuk label sumbu. col mengatur warna:
plot(x, y,
type = "b",
main = "Monthly signups",
xlab = "Month",
ylab = "Signups (thousands)",
col = "steelblue")
col menerima tiga jenis nilai:
- Nama warna:
"red","steelblue","tomato","darkgreen". R mengenal 657 nama; jalankancolors()untuk melihat semuanya. - Kode hex:
col = "#2C7FB8", persis seperti di CSS. - Vector warna: satu per titik, begitulah cara mewarnai titik berdasarkan kelompok:
col = c("tomato", "steelblue")[group], dengangroupberupa factor.
Simbol Titik dengan pch, Ukuran dengan cex dan lwd
Lingkaran berongga bawaan cukup untuk eksplorasi, tetapi terlihat kurang jelas di apa pun yang kamu tunjukkan ke orang lain. pch (plotting character) memilih simbolnya, bernomor 0 sampai 25:
plot(x, y, pch = 19) # solid circle - the usual choice
plot(x, y, pch = 17) # solid triangle
plot(x, y, pch = 21, col = "black",
bg = "gold") # fillable circle: border + fill
Dua angka layak dihafal. pch = 19 adalah lingkaran padat yang dipakai sebagian besar plot jadi. pch = 21 sampai 25 adalah simbol yang bisa diisi: col mewarnai pinggirannya dan bg mewarnai bagian dalamnya, jadi kamu mendapat titik dua warna.
Ukuran dan gaya garis punya pengaturannya sendiri:
cexmengatur skala ukuran titik:cex = 1.5membuat titik setengah kali lebih besar.lwdmengatur tebal garis untuktype = "l"atau"b":lwd = 2menghasilkan garis tegas yang mudah dibaca.ltymengatur pola garis:lty = 1garis penuh,2putus-putus,3titik-titik.
Menumpuk: points(), lines(), dan abline()
plot() memulai plot baru. Untuk menggambar di atas plot yang sudah ada, pakai fungsi pendampingnya, yang menambahkan ke plot saat ini alih-alih menggantinya:
plot(x, y, type = "l", lwd = 2, col = "steelblue",
main = "Actual vs. target")
points(x, y, pch = 19, col = "steelblue") # add the observations
lines(x, x * 1.5, lty = 2, col = "gray40") # add a second series, dashed
abline(h = 10, col = "tomato") # horizontal reference line at y = 10
abline() adalah alat untuk garis acuan, dan punya tiga mode:
abline(h = 10): garis horizontal pada nilai sumbu vertikal tertentu.abline(v = 6): garis vertikal pada nilai sumbu horizontal tertentu.abline(a = 0, b = 1.5): garis berdasarkan intersepadan kemiringanb.
Trik terbaiknya: berikan model hasil fitting, dan ia akan menggambar garis regresinya untukmu: abline(lm(y ~ x)). Satu baris itu mengubah sebaran menjadi sebuah argumen; panduan scatter plot melanjutkan dari sini.
Satu aturan yang perlu dipatuhi: batas sumbu ditetapkan oleh panggilan plot() pertama. Kalau seri yang ditumpuk melewatinya, bagian itu akan terpotong, jadi atur xlim = dan ylim = di plot() awal dengan cukup longgar untuk semua yang ingin kamu tambahkan.
Menambahkan Legenda
Begitu sebuah plot punya lebih dari satu seri, ia butuh legenda. legend() menerima kata kunci posisi sebagai argumen pertamanya, yaitu "topright", "topleft", "bottomright", "bottomleft", "top", "bottom", atau "center" (ini string R literal, jadi tetap dalam bahasa Inggris di kodemu), lalu labelnya dan gaya yang sesuai:
legend("topright",
legend = c("Actual", "Target"),
col = c("steelblue", "gray40"),
lty = c(1, 2),
pch = c(19, NA),
lwd = 2)
Vector col, lty, dan pch harus sejajar dengan legend entri demi entri: label pertama mendapat warna pertama, dan seterusnya. Pakai NA untuk gaya yang tidak berlaku pada suatu seri (di sini, garis target tidak punya titik). Kata kunci itu menempelkan kotak legenda ke salah satu sudut area plot; pilih sudut yang dibiarkan kosong oleh datamu.
Beberapa Panel dan Menyimpan ke File
Untuk menampilkan beberapa plot dalam satu gambar, atur grid plotnya sebelum menggambar: par(mfrow = c(1, 2)) membagi device menjadi satu baris dan dua kolom, dan dua panggilan plot() berikutnya mengisi panelnya secara berurutan. Kembalikan dengan par(mfrow = c(1, 1)) setelah selesai, kalau tidak plot-plot berikutnya akan tetap kecil.
Menyimpan ke file bekerja dengan mengalihkan gambarnya ke file device, bukan ke layar:
png("signups.png", width = 800, height = 600)
plot(x, y, type = "b", pch = 19, col = "steelblue",
main = "Monthly signups", xlab = "Month", ylab = "Signups")
dev.off()
Semua yang ada di antara png() dan dev.off() masuk ke file; tidak ada yang muncul di layar. Lupa memanggil dev.off() adalah bug klasik: file-nya tetap terkunci dan kosong sampai kamu menutup device-nya. pdf(), jpeg(), dan svg() bekerja dengan cara yang sama.
Yang Perlu Kamu Ingat
plot(x, y)langsung menggambar;type =beralih antara titik ("p"), garis ("l"), dan keduanya ("b").main,xlab,ylabmemberi label pada plot;colmenerima nama warna (657 di antaranya ada dicolors()) atau kode hex.pch = 19adalah lingkaran padat;pch = 21sampai25memisahkan pinggiran (col) dari isian (bg);cex,lwd,ltymengatur ukuran dan gaya garis.points(),lines(), danabline()menumpuk di atas plot yang sudah ada;abline(lm(y ~ x))menambahkan garis regresi dengan satu panggilan.legend("topright", ...)memberi label pada seri;png(...)+dev.off()menyimpan ke file.
Berikutnya: histogram, plot satu variabel yang pertama kali kamu pakai saat bertemu dataset baru.
Pertanyaan yang sering diajukan
Bagaimana cara membuat plot di R?
Panggil plot(x, y) dengan dua vector numerik yang panjangnya sama. R membuka jendela grafik dan menggambar satu titik untuk setiap pasangan. Tambahkan type = "l" untuk grafik garis, main, xlab, dan ylab untuk judul, serta col untuk warna.
Apa arti pch di R?
pch (plotting character) memilih simbol titik, bernomor 0 sampai 25. pch = 19 adalah lingkaran padat yang diinginkan kebanyakan orang. Simbol 21 sampai 25 punya isian terpisah: col mengatur pinggirannya dan bg mengatur bagian dalamnya.
Bagaimana cara menambahkan legenda ke plot di R?
Panggil legend() sesudah plot, dengan kata kunci posisi seperti "topright" sebagai argumen pertama, vector label legend =, serta nilai col, pch, atau lty yang sama dengan yang kamu pakai di plot.
Bagaimana cara menyimpan plot R ke file?
Buka file device sebelum membuat plot dan tutup sesudahnya: png("myplot.png", width = 800, height = 600), lalu kode plotmu, lalu dev.off(). Tidak ada yang muncul di layar; plotnya langsung masuk ke file.