web-dev-qa-db-ja.com

matplotlib円グラフに凡例を追加するにはどうすればよいですか?

この例を使用すると 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()
8
murpholinox

私はあなたのコードをチェックしました、そして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()

resulting pie chart

14
Faultier