Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

matplot pie: rotate labels horizontally

Using matplot to create a little gauge with the code below:

    group_size=[10,10,10,10,10,50]
    labels=['AAAA','BBBB','CCCC','DDDD','EEEE','']
    fig, ax = plt.subplots()
    ax.axis('equal')
    pie = ax.pie(group_size, radius=2.2, colors=['k'] ,startangle=180,counterclock=False)
    pie2 = ax.pie([10,10,10,10,10,50], radius=2,  labeldistance=0.7, labels=labels, rotatelabels = 270,
startangle=180,counterclock=False)
    plt.show()

I am trying to get the labels to go horizontally and align with the midpoint of each wedge like this (but with the text inside the wedges):

enter image description here

Using rotatelabel=True, I get the following:

enter image description here

Any ideas on how I can achieve the horizontal rotation of the labels for the graph?

like image 793
AToe Avatar asked Oct 20 '25 13:10

AToe


1 Answers

You need to rotate the pie labels manually. To this end you may loop over the labels and set the rotation to your needs.

group_size=[10,10,10,10,10,50]
labels=['AAAA','BBBB','CCCC','DDDD','EEEE','']
fig, ax = plt.subplots()
ax.axis('equal')
pie = ax.pie(group_size, radius=2.2, colors=['k'] ,startangle=180,counterclock=False)
pie2 = ax.pie([10,10,10,10,10,50], radius=2,  labeldistance=0.9, labels=labels, 
              rotatelabels =True, startangle=180,counterclock=False)

plt.setp(pie2[1], rotation_mode="anchor", ha="center", va="center")
for tx in pie2[1]:
    rot = tx.get_rotation()
    tx.set_rotation(rot+90+(1-rot//180)*180)

plt.show()

enter image description here

like image 153
ImportanceOfBeingErnest Avatar answered Oct 22 '25 04:10

ImportanceOfBeingErnest



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!