如何用Python中的第一个楔形绘制饼图?[matplotlib]

Eri*_*got 2 python matplotlib pie-chart

如何用Matplotlib绘制饼图,第一个楔形从中午开始(即在馅饼的顶部)?默认设置是pyplot.pie()将第一个边缘放在三点钟位置,能够自定义它会很棒.

Nil*_*dat 6

仅仅因为这出现在我的 Google 搜索中,我会同时补充一点,matplotlib 已将其作为函数的附加参数包含在内pie

现在,人们可以打电话plt.pie(data, startangle=90)让第一个楔子在中午开始。

关于此的 PyPlot 文档


Joe*_*ton 5

这有点像黑客,但你可以做这样的事......

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()
Run Code Online (Sandbox Code Playgroud)

示例饼图

  • @EOL - 我同意,这似乎是什么应该是一个相当普遍和简单的需求...也许一个`start_angle`参数的增强请求是一个好主意非常复杂?我无法想象你是唯一一个需要`pie()`以不同角度开始的人...... (2认同)