Soru Matplotlib autopct'u nasıl kullanırım?


Ben kama üstüne yazılmış her kama değeri olan bir matplotlib pasta grafik oluşturmak istiyorum.

belgeleme kullanmamı önerir autopct Bunu yapmak için.

autopct: [Yok | biçim dizesi |   biçim işlevi       Yok ise, takozları etiketlemek için kullanılan bir dize veya işlevdir.   sayısal değerleri. Etiket olacak   kama içine yerleştirildi. Eğer bir   biçimlendirme dizesi, etiket olacak   fmt% yüzde. Eğer bir fonksiyon ise   olarak adlandırılabilir.

Ne yazık ki, bu biçim dizesi veya biçim işlevinin olması gerektiği konusunda emin değilim.

Aşağıdaki bu temel örneği kullanarak, her sayısal değeri kama üzerinde nasıl görüntüleyebilirim?

plt.figure()
values = [3, 12, 5, 8] 
labels = ['a', 'b', 'c', 'd'] 
plt.pie(values, labels=labels) #autopct??
plt.show()

33
2018-05-29 20:30


Menşei




Cevaplar:


autopct Python dizesi biçimlendirmesini kullanarak yüzde değerini görüntülemenizi sağlar. Örneğin, autopct='%.2f'Daha sonra her pasta kama için biçim dizesi '%.2f' ve bu kama için sayısal yüzde değeri pct, bu yüzden kama etiketi dizeye ayarlandı '%.2f'%pct.

import matplotlib.pyplot as plt
plt.figure()
values = [3, 12, 5, 8] 
labels = ['a', 'b', 'c', 'd'] 
plt.pie(values, labels=labels, autopct='%.2f')
plt.show()

verim Simple pie chart with percentages

Kalabalık bir şeyler sunarak meraklı şeyler yapabilirsiniz autopct. Hem yüzde değeri hem de orijinal değeri göstermek için şunu yapabilirsiniz:

import matplotlib.pyplot as plt

# make the pie circular by setting the aspect ratio to 1
plt.figure(figsize=plt.figaspect(1))
values = [3, 12, 5, 8] 
labels = ['a', 'b', 'c', 'd'] 

def make_autopct(values):
    def my_autopct(pct):
        total = sum(values)
        val = int(round(pct*total/100.0))
        return '{p:.2f}%  ({v:d})'.format(p=pct,v=val)
    return my_autopct

plt.pie(values, labels=labels, autopct=make_autopct(values))
plt.show()

Pie chart with both percentages and absolute numbers.

Yine, her pasta kama için, matplotlib yüzde değeri sağlar pct argüman olarak, bu sefer fonksiyona karşı argüman olarak gönderilir my_autopct. Kama etiketi my_autopct(pct).


78
2018-05-29 20:53



Harika. Şimdi her şey açık. Cevabınız için çok teşekkürler. - Kim
Özel otomatik işlev işlevine bir parametre nasıl sağlanabilir? I.e - değişkene göndermek istediyseniz values  için my_autopct. - cosmosa
@ Cosmos1990: plt.pie bekliyor autopct Tek değişkenli fonksiyon, yüzde değeri, pct. Ancak, yapabilirsin bir kapatma - "artık aktif olmayan ortamlara başvurabilecek bir işlev". Nasıl olduğunu göstermek için yukarıdaki yazıyı düzenledim. şimdi values geçer make_autopct, ve make_autopct(values) döner kapanış  my_autopct. Ne zaman my_autopct denir, bakacak values içinde kapsamı arasında make_autopct. - unutbu
Ya da sadece basit bir yüzde => autopct='%.2f%%' - John_J


val=int(pct*total/100.0)

olmalı

val=int((pct*total/100.0)+0.5)

yuvarlama hatalarını önlemek için


8
2017-08-30 14:37





Yapabilirsin:

plt.pie(values, labels=labels, autopct=lambda p : '{:.2f}%  ({:,.0f})'.format(p,p * sum(values)/100))

1
2017-07-31 01:58