Cara terbaik untuk memvisualisasikan gesekan menggunakan R?

15

Melalui situs ini, saya baru saja menemukan Diagram Sankey, cara yang bagus untuk memvisualisasikan apa yang terjadi dalam diagram alur tradisional .

Berikut adalah contoh yang baik dari Diagram Sankey oleh George M. Whitesides dan George W. Crabtree , Jangan Lupa Riset Fundamental Jangka Panjang dalam Energi Source; Jangan Lupa Riset Fundamental Jangka Panjang dalam Energi , Sains 9 Februari 2007: Vol. 315. no. 5813, hlm. 796 - 798.

Setelah saya menyadari bahwa tidak ada paket R Sankey saya menemukan skrip R online , sayangnya skrip ini cukup mentah dan agak terbatas. Dengan harapan besar saya meminta paket-R Sankey atau fungsi yang lebih matang di stackoverflow , tetapi yang mengejutkan saya sepertinya kita tidak memiliki fungsi dewasa untuk membuat diagram Sankey di R.

Setelah saya memposting hadiah Geek On Acid cukup baik untuk menyarankan hack kecil pada skrip yang ada yang membuatnya bekerja lebih atau kurang untuk tujuan spesifik saya.

R-script yang ditingkatkan menghasilkan diagram ini, Geek On Acid's R-Sankey Diagram Sumber; stackoverflow.com .

Tetapi, apakah tidak adanya paket R mengindikasikan bahwa Diagram Sankey bukanlah cara yang menakjubkan untuk memvisualisasikan gesekan menggunakan R dalam aliran data à la yang disajikan dalam diagram di atas (lihat pertanyaan stackoverflow awal untuk data dan kode R. Mungkin ada cara yang lebih baik untuk memvisualisasikan gesekan.

Menurut Anda apa cara terbaik untuk memvisualisasikan gesekan dalam aliran data menggunakan R?

Eric Fail
sumber
7
Sangat sulit untuk mendapatkan diagram agar terlihat bagus dengan cara otomatis apa pun (contoh pertama kemungkinan dilakukan oleh artis secara manual menempatkan node). Sulit untuk memprogram tidak ada hubungannya dengan kegunaannya sebagai alat grafis. Anda dapat menemukan lebih banyak motivasi pada posting saya ini di situs GIS tentang memvisualisasikan arus. Saya juga memberikan beberapa contoh parset dan dot plot pada jawaban untuk situs ini.
Andy W
@AndyW, terima kasih atas komentar yang sangat berguna. Saya akan menyelidiki berbagai metode dan bereksperimen dengan data saya. Terima kasih.
Eric Fail
Diagram atas itu adalah ide yang bagus, tetapi bagi saya seolah-olah jumlah sumber tidak sama dengan jumlah sink (dengan asumsi ketinggian menggambarkan besarnya)
non't101
Ah .. sudahlah, saya salah baca ... bit yang lebih ringan pada sumbernya hanya label, bukan bagian dari data. Agak membingungkan ..
naught101

Jawaban:

4

Saya setuju dengan @ung. Diagram Sankey yang Anda posting adalah, saya pikir, contoh yang cukup bagus dari mana teknik ini dapat membantu. Meskipun rumit, konteksnya (input dan output energi) juga rumit dan sulit untuk memikirkan cara yang lebih baik untuk memvisualisasikan jalur input-ke-output-bertindak-sebagai-input-baru di berbagai kategori penggunaan.

Nah, untuk contoh gesekan yang Anda posting, seperti yang orang lain catat, tidak berguna untuk menggunakan diagram Sankey. Saya pikir Anda perlu memposting set lengkap variabel Anda jika Anda ingin rekomendasi yang baik tentang visualisasi alternatif. Jika Anda hanya ingin menunjukkan perbedaan dalam sumber gesekan antara situs dan dokter, serangkaian kecil titik dot dapat menjadi yang termudah untuk dipahami oleh audiens Anda dan untuk Anda terapkan ( lihat contoh ini , di mana dalam kasus Anda, kelompok dapat situs, elemen dalam kelompok akan menjadi penyebab gesekan, dan sumbu horizontal akan 0-100%).

Jika diagram Sankey adalah sesuatu yang ingin Anda gunakan, dan Anda bersedia mencoba-coba dalam bahasa tingkat tinggi lain, ada contoh yang bagus (dengan kode) pada galeri untuk paket plot Python, matplotlib.

Josh Hemann
sumber
3

Saya tidak akan selalu menganggap kurangnya metode menyiratkan bahwa metode itu tidak penting atau tidak berguna. Lagi pula, untuk semua metode yang saat ini ada di R, ada waktu (sangat mungkin baru - R hanya ~ 10 tahun) ketika tidak ada paket untuk itu.

Namun, saya harus berpikir ada sejumlah cara untuk memvisualisasikan data seperti gesekan. Pikiran pertama saya melihat bagan Anda, adalah bahwa itu dapat diwakili dengan plot titik . Kemungkinan lain juga ada. Fungsionalitas ekstra dari Diagram Sankey akan ikut bermain ketika Anda memiliki beberapa gesekan karena penyebab tertentu pada satu titik, dan kemudian lebih karena penyebab yang sama nanti dengan input dan output lain di antaranya. Itu akan lebih rumit untuk diwakili oleh plot standar (itu juga lebih sulit untuk diikuti bahkan dengan diagram Sankey - misalnya, yang di bagian atas halaman membutuhkan kerja yang cukup banyak untuk dibaca). Karena Anda tampaknya tidak memilikinya, diagram Sankey tampaknya cukup, tetapi berlebihan.

gung - Pasang kembali Monica
sumber
1
Grafik pertama yang diberikan adalah IMO yang luar biasa. Ini memiliki banyak detail yang akan sulit ditangkap secara intuitif dalam serangkaian titik plot. Diagram Sankey juga baik untuk memvisualisasikan aliran dari dan ke berbagai node (penggabungan kembali menjadi energi bekas dan energi hilang).
Andy W
@AndyW, saya tidak bermaksud mengetuk angka itu. Ini banyak pekerjaan untuk membaca sebagian besar b / c itu mengandung banyak informasi. Bahwa itu menarik Anda & menahan Anda di sana untuk sementara waktu bisa menjadi nilai tambah nyata - saya tidak bermaksud deskripsi saya menjadi negatif. OTOH, data OP cukup mudah sehingga plot yang lebih sederhana dapat menyampaikannya.
gung - Reinstate Monica
Poin bagusnya, jika data OP tidak lebih rumit dari yang diberikan, mungkin lebih banyak masalah daripada nilainya! Saya bahkan tidak ingin berpikir tentang mengubah diagram energi asli menjadi serangkaian plot titik.
Andy W
@ung, Terima kasih telah membalas posting saya. Saya setuju, kurangnya metode tidak boleh dianggap sebagai tanda definitif bahwa metode ini tidak baik atau berguna, dan saya pasti tidak memberikan op pada diagram Sankey (SD). Berkenaan dengan data saya, apa yang Anda lihat dalam diagram hanyalah dimensi teratas dari data saya, saya memiliki data yang dikumpulkan di 4 situs yang berbeda dan oleh 7 dokter yang berbeda dan saya ingin memasukkan informasi ini dalam plot saya, seperti semacam membagi dalam aliran keseluruhan. Mungkin terlihat seperti berlebihan dengan data saat ini, tapi saya percaya SD akan berguna jika saya memasukkan semua variabel saya.
Eric Fail
Dengan kompleksitas yang lebih besar, diagram Sankey mungkin adalah taruhan terbaik Anda. Sebaiknya Anda juga memeriksa beberapa pos @ AndyW, seperti yang ditautkan di atas. Dia memberikan banyak jawaban bagus yang mungkin relevan. Misalnya, jika Anda mengklik namanya untuk menavigasi ke halamannya, lalu mengklik tag visualisasi data di sana, Anda bisa melihat-lihat posnya.
gung - Reinstate Monica
1

Bagaimana dengan menggunakan kode R untuk menulis file SVG dengan lebar panah diatur sesuai dengan data Anda, dan tata letak yang sederhana. Kemudian muat ke Inkscape dan tekuk panah di sekitar, tambahkan label dll untuk konten hati Anda untuk membuat sesuatu yang cantik.

Masalah yang jelas: Anda harus mengulang semua prettifikasi Anda di Inkscape jika data Anda berubah (meskipun Anda mungkin dapat menggunakan SVG cantik Anda dari Inkscape sebagai templat dan hanya mengganti lebar panah baru di).

Tapi jujur, jika kekacauan multi-warna dari pertengkaran di atas adalah diagram Sankey yang baik, saya benci melihat yang buruk dengan perut penuh [walaupun menatapnya selama beberapa menit lagi telah memberi saya petunjuk tentang tentang apa itu, grafik yang bagus tidak perlu itu].

Spacedman
sumber
2
Saya tertarik melihat cara yang lebih baik untuk memvisualisasikan data itu. Ada BANYAK informasi dalam plot itu (dan beberapa variabel berbeda), jadi tentu saja itu akan menjadi rumit ...
naught101
2
Peta mikro Dan Carr mengambil waktu untuk mencerna grafik lengkap, demikian juga peta jalan yang terperinci. Tidak juga hal yang buruk. Lihat posting blog James Chesire, Berpikir Cepat dan Visualisasi Berpikir Lambat .
Andy W