グラフ描画ライブラリ matplotlib を用いた円グラフ作成方法とグラフの体裁の変更方法を説明する。円グラフを作成するには matplotlib.pyplot.pie を使用する。
ライブラリ matplotlib を使う場合にはインポートが必要。 matplotlib.pyplot は通常以下の書式で plt と略されインポートされる。
import matplotlib.pyplot as plt
1. 円グラフの作成
円グラフを作成するには matplotlib.pyplot.pie を用いる。書式は以下の通り。
matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None, counterclock=True, wedgeprops=None, textprops=None, center=(0, 0), frame=False, rotatelabels=False, \*, data=None)
引数は下表の通り。必須の引数はグラフの値xのみ。
引数 | 意味 |
---|---|
x | グラフの値をリストなど1次元の配列で指定。必須 |
explode | 各水準の扇形の外側へのずれ量。オプション。デフォルトはずれ量なし |
labels | 水準名をリストなど1次元の配列で指定。。オプション。デフォルトは表示なし |
colors | 各水準の扇形の色。オプション。デフォルトは自動で色が割り振られる |
autopct | 各水準の面積比(%)を表示するかどうか。オプション(デフォルトは表示なし) |
pctdistance | autopctでパーセンテージを表示する場合の円の中心と文字の位置の比。オプション(デフォルトは0.6) |
shadow | 扇形に下に影を付けるかどうか。オプション(デフォルトは影なし) |
normalize | 扇形の合計を1にするかどうか。デフォルトは1(True)。Falseを指定した場合、xが1以下では部分的な円グラフとなり、xが1より大きい場合エラーとなる |
labeldistance | 水準名の表示位置を半径で指定。デフォルトは1.1。Noneとした場合水準名が表示されない。 |
startangle | 円グラフの描画開始角度。デフォルトは0でx軸方向。半時計周りに数字が大きくなる |
radius | 円グラフの直径。デフォルトは1 |
counterclock | 円グラフの進行方向。デフォルトはTrueで反時計回り。Falseで時計回り |
wedgeprops | 扇形の境界線の表示と属性の設定。デフォルトは無し(None) |
textprops | テキストの属性の設定。 |
center | 円グラフの中心座標。デフォルトは(0, 0) |
frame | 座標軸の表示。デフォルトはFalse |
rotatelabels | Trueでラベルを円周に沿った向きに変更。デフォルトはFalse |
最低限の円グラフを作成するには必須の引数 x を設定すればよい。 x にそれぞれの水準の大きさ(円グラフの扇型のサイズ比に相当)を設定し、 plt.pie(x) でグラフが作成され plt.show() でグラフが表示される。
import matplotlib.pyplot as plt x = [10, 12, 24, 7] plt.pie(x) plt.show()
2. グラフの体裁変更
explodeは扇型を外側にずらす量を設定できる。半径を1とした場合のずれ量を水準毎に設定する。2番目の水準のみ0.1ずらす場合。
import matplotlib.pyplot as plt x = [10, 12, 24, 7] exp = [0, 0.1, 0, 0] plt.pie(x, explode=exp) plt.show()
labelsは扇型の外側に水準名を表示する。
import matplotlib.pyplot as plt x = [10, 12, 24, 7] lab = ['A', 'B', 'C', 'D'] plt.pie(x, labels=lab) plt.show()
colorsは扇型の色を指定する。
import matplotlib.pyplot as plt x = [10, 12, 24, 7] col = ['pink', 'purple', 'blue', 'gold'] plt.pie(x, colors=col) plt.show()
各水準の面積比(%)を表示する場合は引数 autopct を使う。 autopct には表示する桁数を%表記で与える。
整数で表示する場合 autopct='%1.0f%%' となる。
import matplotlib.pyplot as plt x = [10, 12, 24, 7] plt.pie(x, autopct='%1.0f%%') plt.show()
小数点以下1桁まで表示する場合 autopct='%1.1f%%' とする。
import matplotlib.pyplot as plt x = [10, 12, 24, 7] plt.pie(x, autopct='%1.1f%%') plt.show()
autopctで各水準の面積比(%)を表示する場合の表示位置をpctdistanceにより中心からの距離で設定する。半径が距離1でデフォルトは0.6。
import matplotlib.pyplot as plt x = [10, 12, 24, 7] plt.pie(x, autopct='%1.0f%%', pctdistance=0.85) plt.show()
shadowをTrueとすると扇形の下に影が付く。
import matplotlib.pyplot as plt x = [10, 12, 24, 7] exp = [0.05, 0.05, 0.05, 0.05] plt.pie(x, explode=exp, shadow=True) plt.show()
normalizeは扇型の面積の合計を1にするかどうかを決めデフォルトはTrue(合計1)。Falseとした場合、値xの合計が1以下であれば一周に満たない円グラフとなり値の合計が1より大きいとerrorになる。
import matplotlib.pyplot as plt x = [0.10, 0.12, 0.24, 0.07] plt.pie(x, normalize=False) plt.show()
labeldistanceはlabelで水準名を表示する場合の中心からの距離を指定する。デフォルトは1.1。
import matplotlib.pyplot as plt x = [10, 12, 24, 7] lab = ['A', 'B', 'C', 'D'] plt.pie(x, labels=lab, labeldistance=0.7) plt.show()
startangleは1つ目の水準の開始角度。デフォルトは0で3時の方向を示す。counterclockは扇型の進行方向で、デフォルトはTrueで反時計回りとなる。
デフォルト設定では一つ目の水準の開始位置が3時の方向で、反時計回りにグラフが書かれていく。より一般的な、開始位置を12時の方向にして時計回りにグラフを書いていく設定にするには、引数に開始位置 startangle=90と回転方向counterclock=Noneを与える。
import matplotlib.pyplot as plt x = [10, 12, 24, 7] plt.pie(x, startangle=90, counterclock=None) plt.show()
radiusで円グラフの半径を指定する。デフォルトは1
import matplotlib.pyplot as plt x = [10, 12, 24, 7] plt.pie(x, radius=0.6) plt.show()
wedgepropsで扇形の輪郭線を描画できる。デフォルトは輪郭線なし。wedgepropsには属性を辞書型にした引数を使う。指定可能な属性はmatplotlib.patches.Wedgeを参照。
線幅3pxの灰色の輪郭線を描画する場合。
import matplotlib.pyplot as plt x = [10, 12, 24, 7] plt.pie(x, wedgeprops={'linewidth': 3, 'edgecolor':'#404040'}) plt.show()
textpropsで表示するテキストの書式を設定できる。引数は属性を辞書型にする。指定可能な属性はmatplotlib.textを参照。
import matplotlib.pyplot as plt x = [10, 12, 24, 7] lab = ['A', 'B', 'C', 'D'] plt.pie(x, labels=lab, textprops={'size': 20, 'color':'blue', 'style': 'oblique'}) plt.show()
frameをTrueにするとグラフの外枠が表示される。デフォルトはFalse
import matplotlib.pyplot as plt x = [10, 12, 24, 7] plt.pie(x, frame=True) plt.show()
rotatelabelsをTrueにするとラベルの向きが円周に沿った向きとなる。デフォルトはFalse
import matplotlib.pyplot as plt x = [10, 12, 24, 7] lab = ['A', 'B', 'C', 'D'] plt.pie(x, labels=lab, rotatelabels=True) plt.show()
0 件のコメント:
コメントを投稿