13

極座標の目盛りラベル (シータ) のパディング/オフセットを増やす方法はありますか?

import matplotlib
import numpy as np
from matplotlib.pyplot import figure, show, grid

# make a square figure
fig = figure(figsize=(2, 2))
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8], 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)
show()

シータ ティック ラベルを極座標プロットからさらに離して、オーバーラップしないようにしたいと思います。

ここに画像の説明を入力

4

1 に答える 1

12

初めに; 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 の場合、軸の外側に配置されます。PolarAxesset_thetagrids()fracfrac

コードは次のようになります。

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=1.3 の PolarAxes

さまざまな値を試しfracて、ニーズに最適な値を見つける必要があります。

上記のようにパラメーターに値を指定しない場合frac、つまりfracデフォルト値Noneがある場合、コードは以下のようにプロットを出力します。上記の例のように、目盛りラベルが「同じくらいのスペースを占有」していないため、プロットの半径が大きくなっていることに注意してください。

frac=None の PolarAxes

于 2013-06-18T20:19:30.913 に答える