2016-04-09 21 views
0

Altı küçük listeye sahip büyük bir liste sahibiyim. Bu altı küçük liste, matplotlib kullanılarak bir pasta grafik oluştururken dilim değerleri olarak kullanılır. Python Matplotlib - döngü için kullanılırken kaydedilen resimlerin üzerine yazılıyor

f_c = [[4, 1, 0, 1, 0], 
     [4, 1, 0, 1, 0], 
     [4, 1, 0, 1, 0], 
     [4, 0, 2, 0, 0], 
     [4, 0, 2, 0, 0], 
     [4, 1, 0, 0, 1]] 

ben oluşturulan pasta-grafikler kaydetmek için döngü için kullanıyorum, Şimdi etiketleri
titles = ['Strongly Agree', 'Agree', 'Neutral', 
      'Disagree', 'Strongly Disagree'] 

olan başka bir listesi var.

for i, j in zip(f_c, lst): 
    pie(i, 
    labels=titles, 
    shadow=True) 
    savefig(j + '.png') 

'lst' dosya adları sahip olan bir listedir ve pasta grafikler kaydetmek için kullanılır: şöyle kodudur.

Pasta grafiklerini oluşturabiliyorum, ancak grafikler ve etiketlerin üzerine yazılıyor. Sadece ilk rakam doğru geliyor, kalan rakamların üzerine yazılıyor. El ile yaptığım zaman tüm rakamlar doğru bir şekilde üretiliyordu, ama eğer bir döngüye koyarsam doğru şekilde kaydedilmiyor (üzerine yazılıyor).

Figure 1, Figure 2, Figure 3

Ne sorun olabilir: Oluşturulan görüntüler (sadece 3) Aşağıdakiler? Lütfen bana yardım et. Matplotlib için yeni.

cevap

2

Yeni bir şekil oluşturmaya çalışmadan önce, üzerinde çalıştığınız rakamı temizlemeniz iyi bir fikirdir, sadece boş bir sayfadan başladığınız açıkça anlaşılır. "Açık rakam" anlamına gelen plt.clf() ile anlaşınız.

Sorunuzla doğrudan ilgili olmayan, ancak yerel olarak sahip olduğunuz diğer yöntemlerin üzerine yazabileceğinden, Python'da from matplotlib import * yapmamak da iyi bir fikirdir. Anlamlı değişken isimleri kullanmak da yardımcı olur. Böyle

şey çalışır:

import matplotlib.pyplot as plt 
for fig, fig_name in zip(fig_data, fig_names): 
    plt.clf() 
    plt.pie(fig, labels=titles, shadow=True) 
    plt.savefig(fig_name + '.png') 
+0

Belki 'plt.clf yerleştirmek istediğiniz()' döngünün sonunda? Kontrol etmedim, ancak IDK, temizlemek için hiçbir şekilde clf() 'yi çağırdığınızda ne olur? –

+0

Hiçbir şey olmuyor, boş bir rakamı temizliyor. – mprat

+0

@mprat Çok teşekkürler. Şimdi istediğim gibi veriyor – Jeril