私は、次のようにTwinyを使用して、同じグラフに2つの別々の数量をプロットしようとしています。
fig = figure()
ax = fig.add_subplot(111)
ax.plot(T, r, 'b-', T, R, 'r-', T, r_geo, 'g-')
ax.set_yscale('log')
ax.annotate('Approx. sea level', xy=(Planet.T_day*1.3,(Planet.R)/1000), xytext=(Planet.T_day*1.3, Planet.R/1000))
ax.annotate('Geostat. orbit', xy=(Planet.T_day*1.3, r_geo[0]), xytext=(Planet.T_day*1.3, r_geo[0]))
ax.set_xlabel('Rotational period (hrs)')
ax.set_ylabel('Orbital radius (km), logarithmic')
ax.set_title('Orbital charts for ' + Planet.N, horizontalalignment='center', verticalalignment='top')
ax2 = ax.twiny()
ax2.plot(v,r,'k-')
ax2.set_xlabel('Linear speed (ms-1)')
show()
データは正常に表示されますが、図のタイトルがセカンダリx軸の軸ラベルと重複しているため、ほとんど判読しにくいという問題があります(ここに画像の例を投稿したかったのですが、まだ十分に高い担当者)。
チャートがきれいに見えるように、タイトルを直接数十ピクセル上に直接シフトする簡単な方法があるかどうかを知りたいです。
Matplotlibの新しいバージョンの新機能かどうかはわかりませんが、少なくとも1.3.1では、これは単純に次のとおりです。
plt.title(figure_title, y=1.08)
これはplt.suptitle()
でも機能しますが、plt.xlabel()
などでは(まだ)動作しません。
plt.title
の使用を忘れ、plt.text
でテキストを直接配置します。誇張された例を以下に示します。
import pylab as plt
fig = plt.figure(figsize=(5,10))
figure_title = "Normal title"
ax1 = plt.subplot(1,2,1)
plt.title(figure_title, fontsize = 20)
plt.plot([1,2,3],[1,4,9])
figure_title = "Raised title"
ax2 = plt.subplot(1,2,2)
plt.text(0.5, 1.08, figure_title,
horizontalalignment='center',
fontsize=20,
transform = ax2.transAxes)
plt.plot([1,2,3],[1,4,9])
plt.show()
ax.set_title('My Title\n', fontsize="15", color="red")
plt.imshow(myfile, Origin="upper")
タイトル文字列の直後に'\n'
を配置すると、プロットはタイトルのすぐ下に描画されます。それも速い解決策かもしれません。
サブプロットのタイトルと重複するxラベルの問題がありました。これは私のために働いた:
import matplotlib.pyplot as plt
fig, ax = plt.subplots(2, 1)
ax[0].scatter(...)
ax[1].scatter(...)
plt.tight_layout()
.
.
.
plt.show()
参照:
plt.tight_layout()
の前にplt.show()
を使用するだけです。うまくいきます。