Bagaimana Anda memvisualisasikan corong yang disegmentasi? (dan bisakah Anda melakukannya dengan Python?)

9

Saya melihat pos ini di Moz yang menyajikan saluran pemasaran tersegmentasi:masukkan deskripsi gambar di sini

Hal semacam ini akan memiliki nilai yang cukup besar dalam pekerjaan saya. Apa yang saya tidak tahu adalah bagaimana memvisualisasikan data mentah untuk menampilkan saluran tersegmentasi seperti ini. Idenya adalah bahwa arahan penjualan berasal dari sumber yang berbeda (yang kami gunakan untuk mengelompokkan data berdasarkan) dan melewati beberapa tahap pada saat mereka mengkonversi ke kesepakatan. Dari setiap tahap ke tahap lainnya beberapa drop off. Lebar masing-masing irisan ditentukan oleh jumlah absolut timah di masing-masing. [ EDIT : Perhatikan bahwa gambar yang digunakan di sini untuk referensi menyesatkan ketika sampai pada angka yang ditentukan di sebelah kanan setiap irisan. Tampaknya tidak ada hubungan antara lebar irisan dan angka. Gambar hanya dapat diambil sebagai referensi untuk desain corong tersegmentasi].

Lagi pula, ada ide bagaimana memvisualisasikannya? Jika memungkinkan, saya ingin memiliki cara untuk melakukannya dengan Python.

Berikut adalah Google Doc dengan beberapa data dummy jika ada yang membutuhkan ...

Menantikan wawasan Anda. Terima kasih!

Optimesh
sumber
5
Saya menemukan ilustrasinya membingungkan karena Faktor Kebohongan besar yang ada di dalamnya: level "corong" berturut-turut menggunakan skala berbeda yang berubah secara tidak teratur. Dengan demikian lebar pita tidak ditentukan oleh angka absolut di masing-masing - setidaknya tidak dengan cara yang mudah dipahami atau divisualisasikan. Jadi apa yang Anda tanyakan: apakah ada cara yang lebih baik untuk memvisualisasikan data seperti itu atau bagaimana membuat grafik ini dengan Python?
whuber
Untuk bekerja di perangkat lunak apa pun, Anda biasanya dapat hanya memasukkan kategori offset untuk bilah yang ditumpuk dan kemudian membuatnya tidak terlihat. Ini adalah contoh dengan google spreadsheet yang sama. Anda dapat melihat itu yaitu yaitu tidak efektif. untuk kategori yang menyusut menjadi tidak ada dalam contoh itu.
Andy W
1
@whuber Hai. Tidak yakin saya ikuti. Setiap level adalah angka absolut ... dan setiap level adalah subkelompok dari yang sebelumnya. Tolong jelaskan mengapa skalanya berubah secara tidak teratur. Terima kasih!
Optimesh
3
Segmen teratas mewakili 1,5 juta kunjungan dan mencakup sekitar 500 piksel pada layar saya: satu piksel = 3000 kunjungan. Segmen bawah mewakili 5000 kunjungan dan menjangkau sekitar 150 piksel pada layar saya, bukannya kurang dari 2 (seperti yang ditunjukkan oleh @Andy dengan contohnya). Itu melebih-lebihkan sekitar 100 menjadi 1. Karena grafik dalam pertanyaan ini tampaknya tidak peduli dengan berlebihan, maka tampaknya tidak ada gunanya untuk menskors ulang segmen: Anda akan mendapatkan informasi yang lebih baik dengan membuat semuanya dengan panjang yang sama dan grafik akan kurang menipu.
whuber
1
@whuber Oh, aku mengerti maksudmu sekarang. Ya, saya baru saja membawa gambar itu sebagai contoh untuk apa yang ingin saya lakukan secara visual. Angka-angka itu sendiri menyesatkan, tidak diragukan lagi.
Optimesh

Jawaban:

3

Plot ini menampilkan tabel kontingensi dua arah yang datanya sekitar ini:

                      Branded Unbranded Social Referring Direct   RSS
First-time...          177276    472737  88638    265915 472737 59092
Return Visits...       236002    629339 118001    354003 629339 78667
4+ Visits in ...       166514    444037  83257    249771 444037 55505
10+ Visit in ...        28782     76751  14391     43172  76751  9594
At Least One Visit...    6707     17886   3354     10061  17886  2236
Last Touch...             660      1759    330       989   1759   220

Ada banyak cara untuk membangun plot ini. Misalnya, Anda dapat menghitung posisi setiap patch warna persegi panjang dan secara terpisah menempelkan setiap patch. Namun, secara umum, ini membantu untuk menemukan deskripsi singkat tentang bagaimana suatu plot merepresentasikan data.

Sebagai titik tolak, kita dapat melihat yang ini sebagai variasi dari bagan batang yang ditumpuk.

Gambar 1: bagan batang bertumpuk.

Plot ini hampir tidak membutuhkan deskripsi: melalui keakraban kita tahu bahwa setiap baris persegi panjang sesuai dengan setiap baris tabel kontingensi; bahwa panjang persegi panjang berbanding lurus dengan jumlah mereka; bahwa mereka tidak tumpang tindih; dan bahwa warnanya sesuai dengan kolom tabel.

Jika kita mengonversi tabel ini menjadi "kerangka data" atau "tabel data" memiliki satu baris per hitungan dengan bidang yang menunjukkan nama baris, nama kolom, dan jumlah, maka memplotnya biasanya sama dengan memanggil fungsi yang sesuai dan menentukan di mana menemukan nama baris, nama kolom, dan jumlah. Menggunakan implementasi Grammar of Graphics ( paket untuk ) ini akan terlihat sepertiXggplot2R

ggplot(X, aes(Outcome, Count, fill=Referral)) + geom_col() 

Detail grafik, seperti seberapa lebar baris balok dan warna apa yang digunakan, biasanya perlu ditetapkan secara eksplisit. Cara melakukannya tergantung pada lingkungan yang merencanakan (dan begitu juga dengan minat yang relatif kecil: Anda hanya perlu mencarinya).

Implementasi khusus dari Grammar of Graphics ini memberikan sedikit fleksibilitas dalam memposisikan bar. Salah satu cara untuk menghasilkan tampilan yang diinginkan, dengan sedikit usaha, adalah memasukkan kategori yang tidak terlihat di dasar setiap batang sehingga batang berada di tengah. Sedikit pemikiran menunjukkan jumlah palsu yang dibutuhkan untuk memusatkan setiap batang harus menjadi rata-rata panjang total batang dan dari batang terpanjang. Untuk contoh ini, ini akan menjadi kolom awal dengan nilai

 254478.0       0.0  301115.0  897955.0  993610.5 1019817.0 

Berikut adalah bagan batang yang ditumpuk yang menunjukkan data palsu berwarna abu-abu terang:

Gambar 2

Angka yang diinginkan dibuat dengan membuat grafik untuk kolom palsu tidak terlihat:

Gambar 3

Grammar of Graphics description dari plot tidak perlu diubah: kami hanya menyediakan tabel kontingensi berbeda yang akan diberikan sesuai dengan deskripsi yang sama (dan mengesampingkan penetapan warna default untuk kolom palsu).

Komentar

Grafik ini jujur: tingkat horizontal setiap tambalan berwarna berbanding lurus dengan data yang mendasarinya, tanpa distorsi. Membandingkannya dengan yang asli (dalam pertanyaan) mengungkapkan betapa ekstremnya distorsi ( Faktor Lie Tufte ).

Jika diinginkan untuk menampilkan detail di bagian bawah "corong," pertimbangkan untuk mewakili penghitungan menurut wilayah daripada panjang. Anda bisa membuat panjang batang sebanding dengan akar kuadrat dari total panjang dan lebarnya (dalam arah vertikal) juga sebanding dengan akar kuadrat. Sekarang bagian bawah "corong" akan sekitar satu-dua puluh panjang terpanjang, daripada satu per empat ratus, memungkinkan beberapa detail untuk ditampilkan. Sayangnya, ggplot2implementasi tidak memungkinkan seseorang untuk memetakan variabel dengan lebar bar, dan karenanya diperlukan kerja-sekitar (yang memang menggambarkan masing-masing persegi panjang secara individual). Mungkin ada implementasi Python yang lebih fleksibel.

Referensi

Edward Tufte, Tampilan Visual Informasi Kuantitatif . Cheshire Press 1984.

Leland Wilkinson, The Grammar of Graphics. Springer 2005.

whuber
sumber