Как построить круговую диаграмму с первым клином сверху в Python? [Matplotlib] - PullRequest
2 голосов
/ 29 сентября 2010

Как можно построить круговую диаграмму с помощью Matplotlib с первым клином, который начинается в полдень (т. Е. На вершине пирога)? По умолчанию pyplot.pie() помещает первое ребро в три часа, и было бы здорово иметь возможность настроить это.

Ответы [ 2 ]

5 голосов
/ 29 сентября 2010

Это что-то вроде хака, но вы можете сделать что-то вроде этого ...

import matplotlib.pyplot as plt
from matplotlib.transforms import Affine2D
import numpy as np

x = [5, 20, 10, 10]
labels=['cliffs', 'frogs', 'stumps', 'old men on tractors']

plt.figure()
plt.suptitle("Things I narrowly missed while learning to drive")
wedges, labels = plt.pie(x, labels=labels)
plt.axis('equal')

starting_angle = 90
rotation = Affine2D().rotate(np.radians(starting_angle))

for wedge, label in zip(wedges, labels):
    label.set_position(rotation.transform(label.get_position()))
    if label._x > 0:
        label.set_horizontalalignment('left')
    else:
        label.set_horizontalalignment('right')

    wedge._path = wedge._path.transformed(rotation)

plt.show()

Example Pie Plot

2 голосов
/ 06 июня 2016

Только потому, что это произошло в поиске Google, я добавлю, что тем временем matplotlib включил это как дополнительный аргумент в функцию pie.

Теперь можно позвонить plt.pie(data, start_angle=90), чтобы начать первый клин в полдень.

Документация PyPlot на этом

...