Saya menemukan R dapat membutuhkan waktu lama untuk menghasilkan plot ketika jutaan titik hadir - tidak mengherankan mengingat bahwa poin diplot secara individual. Selain itu, plot seperti itu seringkali terlalu berantakan dan padat untuk menjadi berguna. Banyak poin yang tumpang tindih dan membentuk massa hitam dan banyak waktu dihabiskan untuk merencanakan lebih banyak poin ke dalam massa tersebut.
Apakah ada alternatif statistik untuk merepresentasikan data besar dalam sebaran standar? Saya telah mempertimbangkan plot kepadatan, tetapi apa alternatif lain yang ada?
r
data-visualization
Alex Stoddard
sumber
sumber
Jawaban:
Ini adalah tugas yang sulit tanpa solusi yang siap (ini tentu saja karena plot kepadatan adalah mundur yang menggoda daripada tidak ada yang benar-benar peduli). Jadi, apa yang bisa kamu lakukan?
Jika mereka benar-benar tumpang tindih (yaitu memiliki koordinat X & Y yang persis sama) dan Anda tidak menggunakan alpha, ide terbaik adalah hanya dengan mengurangi tumpang tindih menggunakan
unique
(dengan alpha, itu dapat diringkas atas kelompok-kelompok tersebut).Jika tidak, Anda dapat membulatkan koordinat secara manual ke piksel terdekat dan menggunakan metode sebelumnya (namun ini adalah solusi kotor).
Terakhir, Anda dapat membuat plot kerapatan hanya untuk menggunakannya untuk mensampel titik-titik di area yang paling padat. Ini di sisi lain tidak akan membuat plot yang sama persis dan dapat memperkenalkan artefak jika tidak disetel secara tepat.
sumber
unique
atau dengan pembulatan dapat menghasilkan plot yang bias (menipu). Sangat penting untuk menunjukkan jumlah tumpang tindih melalui beberapa cara grafis seperti cahaya atau dengan plot bunga matahari.Lihatlah paket hexbin yang mengimplementasikan kertas / metode oleh Dan Carr. The pdf sketsa memiliki rincian lebih lanjut yang saya kutip di bawah ini:
sumber
smoothScatter {RColorBrewer}
dandensCols {grDevices}
. Saya dapat mengkonfirmasi itu bekerja dengan cukup baik dengan ribuan hingga jutaan poin dari data genetik.Saya harus mengakui bahwa saya tidak sepenuhnya memahami paragraf terakhir Anda:
Juga tidak jelas apa jenis plot (fungsi) yang Anda cari.
Karena Anda memiliki variabel metrik, Anda mungkin menemukan plot binagon segi enam atau plot sunnflower berguna. Untuk referensi lebih lanjut, lihat
sumber
Jawaban langsung lain untuk pertanyaan ini adalah paket rgl, yang dapat memplot jutaan poin menggunakan OpenGL. Juga, tentukan ukuran titik (mis. 3) dan perkecil untuk melihat pusat massa ini sebagai blok monolitik, atau perbesar dan lihat struktur yang dulunya monolitik - ukuran titik konstan tetapi jarak di antara mereka di layar tergantung pada pembesaran. Tingkat alfa juga dapat digunakan.
sumber
Ini file yang saya panggil
bigplotfix.R
. Jika Anda sumbernya, itu akan menentukan pembungkusplot.xy
yang "kompres" data plot ketika itu sangat besar. Wrapper tidak melakukan apa-apa jika inputnya kecil, tetapi jika inputnya besar maka ia memecahnya menjadi potongan-potongan dan hanya memplot nilai x dan y maksimum dan minimum untuk setiap potongan. Sumberbigplotfix.R
juga rebindsgraphics::plot.xy
untuk menunjuk ke pembungkus (sumber berkali-kali OK).Perhatikan bahwa
plot.xy
fungsi "pekerja keras" untuk metode merencanakan standar sepertiplot()
,lines()
, danpoints()
. Dengan demikian Anda dapat terus menggunakan fungsi-fungsi ini dalam kode Anda tanpa modifikasi, dan plot besar Anda akan secara otomatis dikompresi.Ini adalah beberapa contoh keluaran. Ini pada dasarnya
plot(runif(1e5))
, dengan titik dan garis, dan dengan dan tanpa "kompresi" diimplementasikan di sini. Plot "titik terkompresi" merindukan wilayah tengah karena sifat kompresi, tetapi plot "garis terkompresi" terlihat lebih dekat dengan sumber asli yang tidak terkompresi. Waktu untukpng()
perangkat; untuk beberapa alasan poin dipng
perangkat jauh lebih cepat daripada diX11
perangkat, tetapi kecepatan-upX11
sebanding (X11(type="cairo")
lebih lambat dariX11(type="Xlib")
pada percobaan saya).Alasan saya menulis ini adalah karena saya lelah menjalankan
plot()
secara tidak sengaja pada dataset besar (misalnya file WAV). Dalam kasus seperti itu saya harus memilih antara menunggu beberapa menit agar plot selesai, dan mengakhiri sesi R saya dengan sinyal (sehingga kehilangan sejarah perintah dan variabel saya baru-baru ini). Sekarang jika saya ingat untuk memuat file ini sebelum setiap sesi, saya benar-benar bisa mendapatkan plot yang berguna dalam kasus ini. Sebuah pesan peringatan kecil menunjukkan kapan data plot telah "dikompres".sumber
Mungkin saya akan dijauhi metode saya, kenangan buruk dari salah satu profesor riset saya berteriak pada orang-orang karena membuang data yang baik dengan menerjemahkannya ke dalam kategori (tentu saja, saya setuju sekarang menjadi hari lol), tidak tahu. Lagi pula, jika Anda berbicara tentang sebar, maka saya sudah memiliki masalah yang sama. Sekarang, ketika saya memiliki data numerik, tidak masuk akal bagi saya untuk mengkategorikannya untuk dianalisis. Tetapi memvisualisasikan adalah cerita yang berbeda. Apa yang saya temukan yang paling berhasil bagi saya adalah pertama-tama (1) memecah variabel independen Anda menjadi grup menggunakan fungsi cut. Anda dapat bermain-main dengan jumlah grup, dan kemudian (2) cukup memplot DV terhadap versi cut IV. R akan menghasilkan plot kotak alih-alih plot sebaran menjijikkan itu. Saya merekomendasikan menghapus outlier dari plot (gunakan opsi outline = FALSE dalam perintah plot). Sekali lagi, saya TIDAK AKAN PERNAH menyia-nyiakan data numerik yang sangat baik dengan mengategorikan dan kemudian menganalisis. Terlalu banyak masalah melakukan itu. Meskipun saya tahu itu adalah topik perdebatan yang sensitif. Tetapi melakukan itu secara khusus untuk tujuan setidaknya membuat beberapa pengertian visual dari data, tidak banyak kerugian yang saya lihat dari itu. Saya telah memplot data sebesar 10M dan masih berhasil memahaminya dari metode ini. Semoga itu bisa membantu! Salam Hormat! Saya sudah melihatnya. Saya telah memplot data sebesar 10M dan masih berhasil memahaminya dari metode ini. Semoga itu bisa membantu! Salam Hormat! Saya sudah melihatnya. Saya telah memplot data sebesar 10M dan masih berhasil memahaminya dari metode ini. Semoga itu bisa membantu! Salam Hormat!
sumber
Untuk seri waktu yang besar, saya telah tumbuh untuk menyukai smoothScatter (bagian dari basis R tidak kurang). Saya sering harus memasukkan beberapa data tambahan, dan menjaga plot API dasar sangat membantu, misalnya:
Yang memberi Anda (jika Anda mengampuni desain):
Itu selalu tersedia dan berfungsi dengan baik dengan kumpulan data yang sangat besar, jadi senang setidaknya melihat apa yang Anda miliki.
sumber