WedX - журнал о программировании и компьютерных науках

Цвет текста круговой диаграммы matplotlib

Мне поручено составить круговую диаграмму на основе сдавших и неуспевающих учеников. Мне интересно, есть ли способ изменить текст на круговой диаграмме. Черный цвет перекрывается неудачной частью, а белый — фоном.

импортировать случайный импорт matplotlib.pyplot как plt

def main():
    students = get_students()
    Student_Count = Random_Grades(students)
    Total = Average (Student_Count,students)
    Pie_Graph(Total,students)
def get_students():
    students = int(input("How many students do you want to enter? \n Students: "))
    while(students > 50):
        print("The data size must be less than or equal to 50")
        students = int(input("How many students do you want to enter? \n Students: "))
    return students
def Random_Grades(students):
    Student_Count =  [([0] * 4) for i in range(students)]
    for a in range(students):
        for b in range(4):
            Student_Count[a][b] = random.randint(1,100)
    return Student_Count
def Average (Student_Count,students):
    total = 0
    Total  = [] # will put the Total in final row
    for a in range (students):
        for b in range(4):
            total += Student_Count [a][b]
        Average = total/4
        Total.append(Average) # will put the total value in the Total list
        total = 0
    return Total
def Pie_Graph(Total,students):
    b = 0
    c = 0
    for a in range (students):
        if Total[a] >= 60:
            b += 1
        elif Total[a] < 60:
            c += 1
    values=[b,c]
    slice_labels=(['Pass','Fail'])
    explode = [0.05,0.05]
    plt.pie(values, labels=slice_labels, colors=('b','k'),autopct="%.1f%%",explode=explode,textprops={'color':"w"})
    plt.title('Student Pass/Fail Chart')
    plt.show()
print()
x="Y"
while(x!="N"):
    main()
    x=input("Press Y to continue, N to stop : ").upper()

Выход

введите здесь описание изображения

Ожидаемый результат

введите здесь описание изображения

14.05.2020

Ответы:


1

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

Есть много способов установить границу, patch.Rectangle или просто использовать axes с круговой диаграммой.

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

def Pie_Graph(Total,students):
    b = 0
    c = 0
    for a in range (students):
        if Total[a] >= 60:
            b += 1
        elif Total[a] < 60:
            c += 1
    values=[b,c]
    slice_labels=(['Pass','Fail'])
    explode = [0.05,0.05]

    fig1, ax1 = plt.subplots(figsize=(5, 5))
    fig1.subplots_adjust(0.1, 0.1, 1, 1)

    b = ax1.pie(values, labels=slice_labels, colors=('b','k'),autopct= make_autopct(values),explode=explode,textprops={'color':"w"})

    plt.legend(['Pass', 'Fail'], loc = 8, bbox_to_anchor=(0.5, -0.25), ncol=2, fancybox=True)
    plt.title('Student Pass/Fail Chart')
    ax1.axis('equal')
    plt.show()
14.05.2020
  • Большое спасибо, есть ли веб-сайт, на котором можно узнать разные цвета (color = '', labels = '') 14.05.2020
  • да, matplotlib.org/3.2.1/tutorials/colors/colors.html< /а> 14.05.2020

  • 2

    Вам просто нужно добавить легенду.

    использовать,

    plt.legend()
    

    незадолго до plt.show()

    Вы также можете изменить расположение легенды.

    14.05.2020
    Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]