[解決済み] タイトルの位置は?
質問
を調整しようとしています。
suptitle
を調整する方法がわからず困っています。
figsize
と表示され、その後に字幕が表示されます。
を呼び出すことが問題なのです。
plt.suptitle("my title", y=...)
の位置を調整するために、図の寸法も調整されます。少し質問です。
-
はどこにあるのでしょうか?
suptitle(..., y=1.1)
実際にタイトルを入れるのは?私が知る限りでは、このメソッドはy
suptitleのパラメータが指すのは matplotlib.text.Text(テキスト しかし、複数のサブプロットがある場合、図座標の意味がわかりません。 -
を指定した場合、図のサイズにどのような影響があるのでしょうか?
y
からsuptitle
? -
図のサイズと間隔を手動で調整する方法 (
subplots_adjust
図中の各軸のサイズを維持したまま、パネルごとに図のタイトルを追加し、図全体に字幕を追加することはできますか?
一例です。
data = np.random.random(size=100)
f, a = plt.subplots(2, 2, figsize=(10, 5))
a[0,0].plot(data)
a[0,0].set_title("this is a really long title\n"*2)
a[0,1].plot(data)
a[1,1].plot(data)
plt.suptitle("a big long suptitle that runs into the title\n"*2, y=1.05);
もちろん、図を作るたびにyを微調整することはできますが、手動で操作しなくても概ねうまくいくようなソリューションが必要です。制約付きレイアウトとタイトレイアウトの両方を試しましたが、どちらもどんな複雑な図形でも確実に動作しません。
解決方法は?
1. 図形の座標の意味は何ですか?
図の座標は0から1まであり、(0,0)は左下隅、(1,1)は右上隅を表します。の座標は
y=1.05
は、図から少し外れることになります。
2. suptitleにyを指定した場合、図のサイズにどのような影響があるのでしょうか?
指定方法
y
は、図のサイズに全く影響を与えません。
3a. 図のサイズと間隔を手動で調整し、パネルごとに図のタイトルを追加し、図全体に字幕を追加するにはどうすればよいですか?
まず、改行を追加しないことです。つまり、2行にしたい場合は、3つの改行を使わないことです(
\n
). それから、サブプロットパラメータを任意に調整し、タイトルのためのスペースを確保することができます。例
fig.subplots_adjust(top=0.8)
を使用し
y <= 1
は、図の中に入るようにタイトルを設定します。
import matplotlib.pyplot as plt
import numpy as np
data = np.random.random(size=100)
fig, axes = plt.subplots(2, 2, figsize=(10, 5))
fig.subplots_adjust(top=0.8)
axes[0,0].plot(data)
axes[0,0].set_title("\n".join(["this is a really long title"]*2))
axes[0,1].plot(data)
axes[1,1].plot(data)
fig.suptitle("\n".join(["a big long suptitle that runs into the title"]*2), y=0.98)
plt.show()
3b. ... 図中の各軸の大きさを維持したまま?
軸の大きさを維持しつつ、タイトルのための十分なスペースを確保するためには、図全体のサイズを変更する必要があります。
これは以下のようなもので、関数
make_space_above
軸の配列を入力とし、新たに希望する上部の余白をインチ単位で取得します。例えば、タイトルを表示するために上部に1インチの余白が必要であるという結論に至ったとします。
import matplotlib.pyplot as plt
import numpy as np
data = np.random.random(size=100)
fig, axes = plt.subplots(2, 2, figsize=(10, 5), squeeze = False)
axes[0,0].plot(data)
axes[0,0].set_title("\n".join(["this is a really long title"]*2))
axes[0,1].plot(data)
axes[1,1].plot(data)
fig.suptitle("\n".join(["a big long suptitle that runs into the title"]*2), y=0.98)
def make_space_above(axes, topmargin=1):
""" increase figure size to make topmargin (in inches) space for
titles, without changing the axes sizes"""
fig = axes.flatten()[0].figure
s = fig.subplotpars
w, h = fig.get_size_inches()
figh = h - (1-s.top)*h + topmargin
fig.subplots_adjust(bottom=s.bottom*h/figh, top=1-topmargin/figh)
fig.set_figheight(figh)
make_space_above(axes, topmargin=1)
plt.show()
(左:呼び出しなし
make_space_above
を呼び出した場合。
make_space_above(axes, topmargin=1)
)
関連
-
Python百行で韓服サークルの画像クロールを実現する
-
[解決済み】syntaxError: 'continue' がループ内で適切に使用されていない
-
[解決済み】Flaskのテンプレートが見つからない【重複あり
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] リストが空かどうかを確認するにはどうすればよいですか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python関数の高度な応用を解説
-
パッケージングツールPyinstallerの使用と落とし穴の回避
-
Pythonの画像ファイル処理用ライブラリ「Pillow」(グラフィックの詳細)
-
[解決済み】ilocが「IndexError: single positional indexer is out-of-bounds」を出す。
-
[解決済み】socket.error: [Errno 48] アドレスはすでに使用中です。
-
[解決済み】syntaxError: 'continue' がループ内で適切に使用されていない
-
[解決済み】Python elifの構文が無効です【終了しました
-
[解決済み】Python Error: "ValueError: need more than 1 value to unpack" (バリューエラー:解凍に1つ以上の値が必要です
-
[解決済み】NameError: 名前 'self' が定義されていません。
-
[解決済み】Matplotlib の tight_layout() が図の suptitle を考慮しない。