Matplotlib nesne yönelimli arabirimi kullanarak seaborn ile çizim yapma


103

matplotlibOOP tarzında kullanmayı şiddetle tercih ediyorum :

f, axarr = plt.subplots(2, sharex=True)
axarr[0].plot(...)
axarr[1].plot(...)

Bu, birden çok figürün ve alt grafiğin izlenmesini kolaylaştırır.

Soru: Seaborn bu şekilde nasıl kullanılır? Veya bu örneği OOP stiline nasıl değiştirebilirim ? Hangi ya da onun seaborngibi plotlama fonksiyonları nasıl anlaşılır?lmplotFigureAxes


1
İlgili: Bu sorun ve olası bir geçici çözüm için bu yanıt , bir deniz korusu figürü oluşturmaya ve tüm eksenleri daha sonra bir alt plan ızgarasına taşımaya izin verecek.
ImportanceOfBeingErnest

Yanıtlar:


229

Kullandığınız seaborn işlevine biraz bağlıdır.

Seaborn'daki çizim işlevleri genel olarak iki sınıfa ayrılır

  • "Eksen düzey" fonksiyonları da dahil olmak üzere regplot, boxplot, kdeplot, ve diğerleri
  • "Şekil düzey" da dahil olmak üzere fonksiyonları lmplot, factorplot, jointplotve bir ya da iki diğerleri

İlk grup, açık bir axargüman alarak ve bir Axesnesne döndürerek tanımlanır . Bundan da anlaşılacağı gibi, bunları onlara ileterek "nesne yönelimli" bir tarzda Axeskullanabilirsiniz:

f, (ax1, ax2) = plt.subplots(2)
sns.regplot(x, y, ax=ax1)
sns.kdeplot(x, ax=ax2)

Eksen düzeyindeki işlevler yalnızca Axesbir nesnenin üzerine çekilir ve başka şekilde figürle uğraşmaz, böylece nesne yönelimli bir matplotlib betiğinde mükemmel bir şekilde mutlu bir şekilde bir arada var olabilirler.

İkinci fonksiyon grubu (Şekil seviyesi), ortaya çıkan grafiğin potansiyel olarak her zaman "anlamlı" bir şekilde organize edilmiş birkaç Ekseni içerebileceği gerçeğiyle ayırt edilir. Bu, fonksiyonların şekil üzerinde tam kontrole sahip olması gerektiği anlamına gelir, bu nedenle lmplotzaten var olan bir tanesini çizmek, diyelim ki mümkün değildir . Fonksiyonu çağırmak her zaman bir şekli başlatır ve onu çizdiği belirli arsa için ayarlar.

Ancak, bir kez aradığınızda lmplot, türünden bir nesne döndürür FacetGrid. Bu nesnenin, arsanın yapısı hakkında biraz bilgi sahibi olan, ortaya çıkan arsa üzerinde çalışmak için bazı yöntemleri vardır. Ayrıca, FacetGrid.figve FacetGrid.axesbağımsız değişkenlerindeki temel şekli ve eksen dizisini ortaya çıkarır . jointplotFonksiyonu çok benzer, ancak bir kullanan JointGridbir nesne. Dolayısıyla, bu işlevleri nesne yönelimli bir bağlamda kullanmaya devam edebilirsiniz, ancak tüm özelleştirmeniz, işlevi çağırdıktan sonra gelmelidir.


Bu gerçekten yardımcı oldu.
Cevabıma
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.