17

この例http://matplotlib.org/examples/pie_and_polar_charts/pie_demo_features.htmlを使用し て、この円グラフに凡例を追加するにはどうすればよいですか? 私の問題は、1 つの大きなスライスが 88.4%、2 番目に大きいスライスが 10.6%、他のスライスが 0.7 と 0.3% であることです。円の周りのラベルは (最大のスライスを除いて) 表示されず、小さいスライスのパーセンテージ値も表示されません。したがって、名前と値を示す凡例を追加できると思います。しかし、私は方法を知りませんでした...

# -*- coding: UTF-8 -*-
import matplotlib.pyplot as plt
# The slices will be ordered and plotted counter-clockwise.
labels = 'Rayos X', 'RMN en solución', 'Microscopía electrónica', 'Otros'
sizes = [88.4, 10.6, 0.7, 0.3]
colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral']
explode = (0.1, 0, 0, 0)
plt.pie(sizes, explode=explode, labels=labels, colors=colors, shadow=True, startangle=90)
plt.legend(title="técnica")
# Set aspect ratio to be equal so that pie is drawn as a circle.
plt.axis('equal')
plt.show()
4

2 に答える 2

30

私はあなたのコードをチェックし、plt.legend()あなたが望むように凡例を作成します。を設定しloc="lower left"て、関連するパイと重ならないようにします。

私にとっては、非標準文字以外の文字列は適切に表示されます。これにより、文字列がまったく表示されないという問題が発生する可能性があります。最大のスライスと「Otros」のみに特殊文字が含まれていません。キャンバスから押し出される可能性があるため、図のサイズも変更してみてください。matplotlib でアクセントを書く方法を参照して、適切な文字列で再試行してください。

パーセンテージを表示するように設定していないため、パーセンテージは表示されません。autopct='%1.1f%%'パーセンテージをプロットするのを省略したため、投稿した例を参照してください。この特別なケースでは、一部のスライスが小さすぎるため、境界線のラベルと同じようにパーセンテージが重なるため、パーセンテージをプロットしたくありません。たぶん、これらの情報を凡例に追加します。

すべてをまとめて (特殊文字以外に - TeX を有効にする際に問題が発生しました)、次のコードを試してください。

# -*- coding: UTF-8 -*-
import matplotlib.pyplot as plt
# The slices will be ordered and plotted counter-clockwise.
labels = [r'Rayos X (88.4 %)', r'RMN en solucion (10.6 %)', 
r'Microscopia electronica (0.7 %)', r'Otros (0.3 %)']
sizes = [88.4, 10.6, 0.7, 0.3]
colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral']
patches, texts = plt.pie(sizes, colors=colors, startangle=90)
plt.legend(patches, labels, loc="best")
# Set aspect ratio to be equal so that pie is drawn as a circle.
plt.axis('equal')
plt.tight_layout()
plt.show()

結果の円グラフ

于 2013-11-08T11:40:31.897 に答える