Python 饼图彩色文本matplotlib

Python 饼图彩色文本matplotlib,python,matplotlib,charts,Python,Matplotlib,Charts,我的任务是根据及格学生和不及格学生制作一个饼图。我想知道是否有办法改变饼图中的文字。 黑色部分被故障部分覆盖,白色部分被背景覆盖 随机输入 将matplotlib.pyplot作为plt导入 def main(): students = get_students() Student_Count = Random_Grades(students) Total = Average (Student_Count,students) Pie_Graph(Total,stu

我的任务是根据及格学生和不及格学生制作一个饼图。我想知道是否有办法改变饼图中的文字。 黑色部分被故障部分覆盖,白色部分被背景覆盖

随机输入 将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()
def main():
学生=得到学生()
学生人数=随机分数(学生)
总计=平均值(学生人数,学生)
饼图(学生总数)
def get_学生():
students=int(输入(“您想输入多少名学生?\n students:”)
而(50岁以上的学生):
打印(“数据大小必须小于或等于50”)
students=int(输入(“您想输入多少名学生?\n students:”)
留学生
def随机大学成绩(学生):
学生人数=[([0]*4)对于范围内的i(学生)]
对于范围内的(学生):
对于范围(4)中的b:
学生人数[a][b]=随机数,随机数(1100)
返回学生人数
def平均值(学生人数,学生):
总数=0
总计=[]#将总计放在最后一行
对于范围内的(学生):
对于范围(4)中的b:
总数+=学生人数[a][b]
平均数=总数/4
总计。追加(平均值)#将总值放入总计列表中
总数=0
返回总数
定义饼图(总计,学生):
b=0
c=0
对于范围内的(学生):
如果总计[a]>=60:
b+=1
elif总计[a]<60:
c+=1
值=[b,c]
切片标签=(['Pass','Fail'])
爆炸=[0.05,0.05]
plt.pie(值,标签=slice_标签,颜色=('b','k'),autopct=“%.1f%%”,explode=explode,textprops={'color':“w”})
课程名称(“学生及格/不及格表”)
plt.show()
打印()
x=“Y”
而(x!=“N”):
main()
x=输入(“按Y键继续,按N键停止:”)。上限()
输出

预期产量


您只需添加一个图例即可

使用

plt.legend()
就在
plt.show()之前


您还可以更改图例的位置。

您可以使用自定义自动CT在piechart中呈现所需的任何字符串,您可以使用图例标记与哪个集合对应的颜色

有很多方法可以设置边框,
patch.Rectangle
,或者只使用piechart的

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()
def make_autoct(值):
def my_自动CT(pct):
总计=总和(值)
val=整数(四舍五入(百分比*总计/100.0))
返回“{p}%”。格式(p=val)
归还我的自动CT
定义饼图(总计,学生):
b=0
c=0
对于范围内的(学生):
如果总计[a]>=60:
b+=1
elif总计[a]<60:
c+=1
值=[b,c]
切片标签=(['Pass','Fail'])
爆炸=[0.05,0.05]
图1,ax1=plt.子批次(图大小=(5,5))
图1.子批次调整(0.1,0.1,1,1)
b=ax1.pie(值,标签=slice_标签,颜色=('b','k'),autoct=make_autoct(值),explode=explode,textprops={'color':“w”})
plt.legend(['Pass','Fail'],loc=8,bbox\u to\u anchor=(0.5,-0.25),ncol=2,fancybox=True)
课程名称(“学生及格/不及格表”)
ax1.轴(“相等”)
plt.show()

非常感谢有没有网站可以了解不同的颜色(颜色=“”,标签=“”)是的,