棒グラフや凡例の重なり順についてはStack Overflowにかかれていますが、Polar chartの重なり順については慣れていない人では少し戸惑うかもしれませんのでメモ。
matplotlibにおける重なり順の指定にはzorderを使用します。
こんな感じのものを作る時。
きちんと重なり順を指定しないとこうなることがあります。
set_zorderで大きい値に指定したものが表に出ます。
sample
この場合は内側からプロットされるため、zorderを順番に9, 8, 7, 6, 5... というように指定しています。
import numpy as np import matplotlib.pyplot as plt theta = np.tile(0, 10) radii = np.arange(2.0, 22.0, 2.0) width = np.pi*2 colors = theta ax = plt.subplot(111, polar=True) bars = ax.bar(theta, radii, width=width, bottom=0.0) c = 0 for r, bar in zip(radii, bars): # ここでzorderの指定 bar.set_zorder(10-c) if c % 2 == 0 or c == 0: bar.set_facecolor('#000000') else: bar.set_facecolor('#ffffff') bar.set_alpha(1.0) c += 1 plt.show()
余談ですがmatplotlibでplotした画像の背景が透過されたpngで保存したい場合はsavefigを使います。
plt.savefig('***.png', transparent=True)