6

仰角が半径成分である極座標プロットに方位角仰角曲線をプロットしています。デフォルトでは、Matplotlib は中心の 0 から周囲の 90 までの半径値をプロットします。それを逆にしたいので、90度が中心になります。ax.set_ylim(90,0) を呼び出して制限を設定しようとしましたが、これにより LinAlgError 例外がスローされます。ax は、add_axes の呼び出しから取得される軸オブジェクトです。

これを行うことはできますか? もしそうなら、私は何をしなければなりませんか?

編集:これが私が今使っているものです。基本的なプロット コードは、Matplotlib の例の 1 つから取られました。

# radar green, solid grid lines
rc('grid', color='#316931', linewidth=1, linestyle='-')
rc('xtick', labelsize=10)
rc('ytick', labelsize=10)

# force square figure and square axes looks better for polar, IMO
width, height = matplotlib.rcParams['figure.figsize']
size = min(width, height)
# make a square figure
fig = figure(figsize=(size, size))
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8], projection='polar', axisbg='#d5de9c')

# Adjust radius so it goes 90 at the center to 0 at the perimeter (doesn't work)
#ax.set_ylim(90, 0)

# Rotate plot so 0 degrees is due north, 180 is due south

ax.set_theta_zero_location("N")

obs.date = datetime.datetime.utcnow()
az,el = azel_calc(obs, ephem.Sun())
ax.plot(az, el, color='#ee8d18', lw=3)
obs.date = datetime.datetime.utcnow()
az,el = azel_calc(obs, ephem.Moon())
ax.plot(az, el, color='#bf7033', lw=3)

ax.set_rmax(90.)
grid(True)

ax.set_title("Solar Az-El Plot", fontsize=10)
show()

そこから生まれるプロットは

ここに画像の説明を入力

4

1 に答える 1

4

私はなんとか彼の放射軸を反転させました。新しい軸に一致させるために、半径を再マップする必要がありました。

fig = figure()
ax = fig.add_subplot(1, 1, 1, polar=True)

def mapr(r):
   """Remap the radial axis."""
   return 90 - r

r = np.arange(0, 90, 0.01)
theta = 2 * np.pi * r / 90

ax.plot(theta, mapr(r))
ax.set_yticks(range(0, 90, 10))                   # Define the yticks
ax.set_yticklabels(map(str, range(90, 0, -10)))   # Change the labels

単なるハックであることに注意してください。軸はまだ中心が0で、周囲が90です。プロットするすべての変数に対してマッピング関数を使用する必要があります。

于 2012-09-12T16:02:33.153 に答える