163

次のように 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 軸の軸ラベルと重なってほとんど判読できないという問題があります (ここに写真の例を投稿したかったのですが、まだ十分に高い担当者)。

チャートがきれいに見えるように、タイトルを直接数十ピクセル上に移動する簡単な方法があるかどうか知りたいです。

4

7 に答える 7

284

それがmatplotlibのそれ以降のバージョンの新機能かどうかはわかりませんが、少なくとも1.3.1の場合、これは単純です:

plt.title(figure_title, y=1.08)

これは にも機能しますが、 などplt.suptitle()には (まだ) 機能しません。plt.xlabel()

于 2014-04-28T10:14:27.430 に答える
36

使用を忘れて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()

ここに画像の説明を入力してください

于 2012-10-05T17:28:12.197 に答える
4

plt.tight_layout()の前に使用してplt.show()ください。それはうまくいきます。

于 2018-08-24T06:10:59.793 に答える
0

タイトルのx,位置に入りたくない場合の一時的な解決策。y

以下は私のために働いた。

plt.title('Capital Expenditure\n') # Add a next line after your title

称賛。

于 2021-02-06T15:10:45.857 に答える