2

正午に開始する最初のウェッジ (つまり、パイの上) を使用して、Matplotlib で円グラフを描画するにはどうすればよいですか? デフォルトではpyplot.pie()、最初のエッジを 3 時の位置に配置します。これをカスタマイズできると便利です。

4

2 に答える 2

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()

円グラフの例

于 2010-09-28T22:39:57.217 に答える
4

これが私のためのGoogle検索で出てきたという理由だけで、それまでの間、matplotlibはこれをpie関数への追加の引数として含めていることを追加します。

plt.pie(data, start_angle=90)これで、最初のウェッジを正午に開始するようにコールできます。

これに関する PyPlot ドキュメント

于 2016-06-06T13:21:05.617 に答える