ile% 100 yığılmış alan grafiği oluşturma Matplotlib'de% 100 yığılmış alan şemasının nasıl oluşturulacağını merak ediyordum. Matplotlib sayfasında bunun için bir örnek bulamadım.matplotlib
Burada birileri bana nasıl ulaşılacağını gösterebilir?
ile% 100 yığılmış alan grafiği oluşturma Matplotlib'de% 100 yığılmış alan şemasının nasıl oluşturulacağını merak ediyordum. Matplotlib sayfasında bunun için bir örnek bulamadım.matplotlib
Burada birileri bana nasıl ulaşılacağını gösterebilir?
Bunun için basit bir şekilde ben, örneğin olduğu gibi, bir dizi içinde düzenlenmiş y değerlerine sahip olduğunu varsayalım 100.
her x-değeri, y değerlerinin toplamı olduğundan emin olmak için bir aşağıda,
y = np.array([[17, 19, 5, 16, 22, 20, 9, 31, 39, 8],
[46, 18, 37, 27, 29, 6, 5, 23, 22, 5],
[15, 46, 33, 36, 11, 13, 39, 17, 49, 17]])
kolon toplamları onun sütun toplamları ile y
dizi bölmek gerekir, 100, ve daha sonra çok-katlı 100 ile bu yapım, y değeri 0 ile 100 kapsar yapar emin olmak için, yani y ekseninin yüzde "birimi". Y ekseninin değerlerini 0'dan 1'e kadar aralığını istiyorsanız, 100 ile çarpmayın.
Yukarıdaki gibi tek dizisinde düzenlenmiş y değerleriniz olmasa bile prensip aynıdır; y-değerlerinden (örneğin, y1
, y2
, vb.) oluşan her dizide karşılık gelen elemanlar, 100 (veya 1) olarak özetlenmelidir.
Aşağıdaki kod, yorumuna bağlı olarak example @LogicalKnight öğesinin değiştirilmiş bir sürümüdür.
import numpy as np
from matplotlib import pyplot as plt
fnx = lambda : np.random.randint(5, 50, 10)
y = np.row_stack((fnx(), fnx(), fnx()))
x = np.arange(10)
# Make new array consisting of fractions of column-totals,
# using .astype(float) to avoid integer division
percent = y/y.sum(axis=0).astype(float) * 100
fig = plt.figure()
ax = fig.add_subplot(111)
ax.stackplot(x, percent)
ax.set_title('100 % stacked area chart')
ax.set_ylabel('Percent (%)')
ax.margins(0, 0) # Set margins to avoid "whitespace"
plt.show()
Bu, aşağıda gösterilen çıktıyı verir.
Doğru yardım için çok teşekkürler! Şu anda mpl 1.2.1 ve numpy ile ilk etapta verileri çizmek için biraz mücadele ediyorum ve bu konuya tekrar bakmak için zamanım olmadı. Bu yüzden, bu güzel kod parçasını aldığım için çok mutluyum! Alkış Thomas –
Ben şimdi kendimi grafik yığınını üretmek için bu yöntemi denedim ve bir istisna ben stackplot 'traceback (son En son çağrı) aramak için denemek her zaman atılıyor: Dosya "
@Magic_Matt_Man Python ve Matplotlib hangi sürümlerini kullanıyorsunuz? Ubuntu Linux 64-bit dağıtımında – hooy
Bu nasıl [örneğin] hakkında (http://matplotlib.org/examples/pylab_examples/stackplot_demo.html)? –
Hiçbir şey denediniz mi? Çoğunlukla çalışan bir kod varsa, SO üzerinde daha iyi bir yanıt alırsınız. Bu soru olduğu gibi okur ve 'lütfen çalışmamı benim için yap'. @LogicalKnight'ın işaret ettiği örnek iyi bir başlangıçtır ve yolun% 95'ini alır. – tacaswell