Search code examples
pythonmatplotlibpie-chart

How can I improve the rotation of fraction labels in a pyplot pie chart


I copied the following example code with a minor change. I want to rotate the fractions in a certain angle. I achived my goal but my question is if there is an easier way to rotate the fractions:

import matplotlib.pyplot as plt
import matplotlib

# Data to plot
labels = 'Python', 'C++', 'Ruby', 'Java'
sizes = [215, 130, 245, 210]
colors = ['gold', 'yellowgreen', 'lightcoral', 'lightskyblue']
explode = (0.1, 0, 0, 0)  # explode 1st slice

# Plot
pie_properties = plt.pie(sizes,  labels=labels, colors=colors,
        autopct='%1.1f%%', shadow=False, startangle=140, pctdistance=0.8, radius = 0.5)

# Rotate fractions
# [0] = wedges, [1] = labels, [2] = fractions
fraction_text_list = pie_properties[2]
for text in fraction_text_list:
    text.set_rotation(315)

plt.axis('equal')
plt.show()

enter image description here

Is it possible to improve this?


Solution

  • The method in the question to rotate the auto percentage labels is already quite easy. If by "easier" you mean "shorter", you can put the whole command in one single line:

    import matplotlib.pyplot as plt
    
    # Data to plot
    labels = 'Python', 'C++', 'Ruby', 'Java'
    sizes = [215, 130, 245, 210]
    colors = ['gold', 'yellowgreen', 'lightcoral', 'lightskyblue']
    explode = (0.1, 0, 0, 0)  # explode 1st slice
    
    # Plot
    w,l,p = plt.pie(sizes,  labels=labels, colors=colors,
            autopct='%1.1f%%', startangle=140, pctdistance=0.8, radius = 0.5)
    [t.set_rotation(315) for t in p]
    
    plt.axis('equal')
    plt.show()