2014-09-09 4 views
0

Я в настоящее время имею рабочую программу, которая создает круговые диаграммы, похожие на аналогичный код ниже:Python Matplotlib: как создать круговую диаграмму с переменными значениями

import matplotlib.pyplot as plt 

def get_name_counts(Names): 
    if "Bob" in Names: 
     NameList[0] +=1 
    elif "Ann" in Names: 
     NameList[1] +=1 
    elif "Ron" in Names: 
     NameList[2] +=1 
    elif "Zee" in Names: 
     NameList[3] +=1 

def plot_dist(Values, Labels, Title): 
    plt.title(Title) 
    plt.pie(Values, labels = Labels, autopct='%0.0f%%', colors = ('g', 'r', 'y', 'c')) 

NameList = [0]*4 

for Line in File: 
    for Names in Line: 
     get_name_count(Names) 

pp=PdfPages("myPDF.pdf") 
MyPlot = plt.figure(1, figsize=(5,5)) 
Labels = ('Bob', 'Ann', 'Exon', 'Ron', 'Zee') 
Values = NameList 

plot_dist(Values, Labels, "Name Distribution") 
pp.savefig() 
plt.close() 
pp.close() 

Однако, у меня есть несколько разных списков, для которых я бы как создать круговые диаграммы, и мне было интересно, есть ли более простой способ сделать это. Вместо того, чтобы указывать точные имена для каждого графика, могу ли я создать одну функцию, которая будет определять каждое уникальное имя и получить связанный счет?

ответ

0

Вы можете запустить цикл над вами списки, и держать счетчик, чтобы иметь уникальное имя файла изображения:

#!/usr/bin/python3 

from matplotlib import pyplot as plt 

data = [range(n) for n in range(4,9)] 

for i, x in enumerate(data): 

    fig = plt.figure() 
    ax = fig.add_subplot(111) 

    ax.pie(x, labels=x) 

    fig.savefig("pie{0}.png".format(i)) 

Это участки первого уровня элементов data, 5 круговые диаграммы в целом.

Смежные вопросы