初めに; figsize
を(2,2) に指定しax
、幅と高さの両方の 80% を占めるようにすると、目盛りラベルをパディングするスペースがほとんど残りません。これにより、目盛りラベルが図のエッジで「切り取られる」可能性があります。これは、次のいずれかで簡単に「修正」できます
- 大きく指定
figsize
- (2,2) サイズの Figureの
ax
占有スペースを少なくする
- 目盛りラベルに小さいフォント サイズを使用する
またはこれらの任意の組み合わせ。Axes
私の意見では、この「問題」に対する別のより良い解決策は、境界を指定するのではなく、サブプロットを使用することです。
ax = fig.add_subplot(111, polar=True, axisbg='#d5de9c')
tight_layout()
これにより、図のレイアウトを自動的に構成してすべての要素を適切に含める方法を使用できるようになります。
次に、目の前の本当の問題に移ります。パディング。では、PolarAxes
とりわけ、theta-ticks の半径方向の配置を設定できます。これは、目盛りラベルを配置する極軸半径の分数をのメソッドのfrac
パラメーターへの引数として指定することによって行われます。引数は、目盛りラベルを配置する軸の半径の一部である必要があります。つまり、< 1 の場合、目盛りラベルは軸の内側に配置され、> 1 の場合、軸の外側に配置されます。PolarAxes
set_thetagrids()
frac
frac
コードは次のようになります。
import numpy as np
from matplotlib.pyplot import figure, show, grid, tight_layout
# make a square figure
fig = figure(figsize=(2, 2))
ax = fig.add_subplot(111, polar=True, axisbg='#d5de9c')
ax.set_yticklabels([])
r = np.arange(0, 3.0, 0.01)
theta = 2*np.pi*r
ax.plot(theta, r, color='#ee8d18', lw=3)
ax.set_rmax(2.0)
# tick locations
thetaticks = np.arange(0,360,45)
# set ticklabels location at 1.3 times the axes' radius
ax.set_thetagrids(thetaticks, frac=1.3)
tight_layout()
show()
さまざまな値を試しfrac
て、ニーズに最適な値を見つける必要があります。
上記のようにパラメーターに値を指定しない場合frac
、つまりfrac
デフォルト値None
がある場合、コードは以下のようにプロットを出力します。上記の例のように、目盛りラベルが「同じくらいのスペースを占有」していないため、プロットの半径が大きくなっていることに注意してください。