Violin Plot (Keman Grafiği) ile Değişken Anlatma Sanatı

Yiğit Şener
3 min readJan 3, 2021

--

Photo by Dominik Scythe on Unsplash

Violin plot (keman grafiği) sayısal değerler için birden fazla istatistiksel çıkarım yapmamızı sağlayan hem box plot (kutu grafiği) hem de kernel density plotun (yoğunluk grafiği) bir karışımıdır. Bununla beraber gruplar arasındaki sayısal değerlerin karşılaştırılmasında oldukça faydalıdır.

Normal dağılımı anlattığım buradaki yazımda violin plottan bahsetmiştim ancak bu yazı ile daha geniş olarak grafiği ele almaya karar verdim. Bir violin plot üzerinde aşağıdaki değerleri görebilirsiniz.

  • Medyan (%50 Quartile): Değişkene ait verilerin ortasında yer alan değer.
  • İlk Çeyreklik (%25 Quartile): Kısacası medyan ile minimumun ortasındaki değer olarak açıklanabilir.
  • Üçüncü Çeyreklik (%75 Quartile): Medyan ile maksimumum ortasındaki değer olarak açıklanabilir.
  • Çeyrekler Arası (Interquartile Range IQR): ilk ve üçüncü çeyrek arasında yer alan değerler bu aralığa girmektedir.
  • Maksimum: Üçüncü quartile + IQR * 1,5 = bize maksimum değerini verir.
  • Minimum: İlk çeyrek IQR * 1,5 = bize minimum değerini verir.
  • Sıradışı Veri (Outliers): Hesaplanan minimum ve maksimum değerlerin dışında kalan veriler outlier olarak nitelendirilir.
  • Yoğunluk: Verilerin yoğun olarak yer aldığı alanların gösterildiği yer.

Box plot ile violin plotu karşılaştıralım.

Yukarıdaki şekilde görüldüğü üzere violin plot, box plota göre verilerin biriktiği alanları göstermesi ve yoğunluğu verebilmesi açısından bize değişken hakkında daha fazla bilgi verebilmektedir.

Python İle Violin Plot

Violin plot örneklerimizi GitHub hesabında yer alan Fish datası üzerinden yapacağız. Veri setine ulaşmak için aşağıdaki kodu çalıştırmanız yeterli ancak bir problem olması durumunda GitHub hesabım üzerinden indirebilirsiniz.

Çıkan violin plota bir bakalım

Yukarıdaki kodda yer alan sonuçları incelediğimizde medyan ve ortalama arasında birbirine yakın ve çeyrekler ile medyan arasında da hemen hemen yakın bir dağılım olduğunu görmekteyiz. Ancak 3. çeyrek sonrasında maksimum değere yaklaşan sayıların minimuma yaklaşanlara göre fazlalaştığı görülmektedir. Aynı şekilde violin plottta da görüldüğü üzere yukarı doğru yoğunluğun azaldığı görülmektedir. Yani temel istatistikler ile okuduklarımızı kanlı canlı ve yoğunluk bazında violin plot üzerinden görebilmekteyiz.

Veri setinde yer alan balık türlerinden ikisini seçerek violin plot üzerinde karşılaştıralım.

# sadece Perch ve Bream türlerini seçelim
df_two = df[(df["Species"] == "Perch") | (df["Species"] == "Bream")]

# Violin plot üzerinden
# uzunlukları (
Length1) karşılaştıralım
sns.violinplot(x="Species", y="Length1", data=df_two, linewidth=5)
plt.show()

Plot üzerinde görüldüğü üzere uzunlukların hangi noktalarda özellikle yoğunluğun farklılaştığı görülmektedir. X ve Y parametrelerinin yerlerini değiştirerek plotu yatay düzlem üzerinden de görselleştirebiliriz.

sns.violinplot(x="Length1", y="Species", data=df_two, linewidth=5)
plt.show()

Uzunluk açısından tüm türlere bir arada bakalım

sns.violinplot(x="Species", y="Length1", data=df, linewidth=3)
plt.show()

Sanırım biraz renklendirsek fena olmaz.

sns.violinplot(x="Species", y="Length1", data=df, palette="Set2")
plt.show()

Sonuç

Violin plot ile değişkeni anlamak ve anlatmak oldukça kolay ve eğlenceli. Yukarıdaki kodlara farklı parametreler ekleyerek grafikleri dilediğiniz gibi zenginleştirebilirsiniz.

--

--