Tetsu27
@Tetsu27

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

matplotlibで作成した動画の端が切れてしまう

解決したいこと

matplotlibのanimationモジュールを使って動画を作っています。しかし、動画の左端が切れてしまう問題に直面してます。問題の原因は動画作成時に2つのplotを使っていることであると分かっています。
解決法をお教えいただきたいです。宜しくお願い致します。

plotを1つしか使っていない動画作成コード

data_size = 100

# --- animation ---
fig = plt.figure(figsize=(6, 5))
ax = fig.add_subplot(111)

def anime(i):
    ax.cla()
    ax.plot(np.random.random(size=(data_size, )), label='data1')
    # ax.plot(np.random.randint(low=-1, high=1, size=data_size), label='data2')
    ax.set_xlabel('xaxis')
    ax.set_ylabel('yaxis')
    ax.legend()
    
ani = animation.FuncAnimation(fig, anime, frames=10, interval=400)
ani.save('./movie/temp.gif')

上コードの出力。
temp.gif
y軸ラベルのyaxisが表示されており問題ありません。

しかし、動画作成において2つのplotをすると左端が切り取られてしまい、y軸ラベルが見えなくなってしまいます。
plotを2つ使った動画作成コード

data_size = 100

# --- animation ---
fig = plt.figure(figsize=(6, 5))
ax = fig.add_subplot(111)

def anime(i):
    ax.cla()
    ax.plot(np.random.random(size=(data_size, )), label='data1')
    ax.plot(np.random.randint(low=-1, high=1, size=data_size), label='data2')
    ax.set_xlabel('xaxis')
    ax.set_ylabel('yaxis')
    ax.legend()
    
ani = animation.FuncAnimation(fig, anime, frames=10, interval=400)
ani.save('./movie/temp.gif')

上コードの出力。
temp.gif
左側が切り取られてしまってy軸ラベルが見えなくなってしまいます。

どなたか解決方法知っている方いらっしゃいませんでしょうか。解決方法をご教授いただきたいです。
よろしくお願いいたします。

0

1Answer

自分の環境で実行すると、Y軸ラベルも表示されました。
(MacOS 14.0、matplotlib 3.7.2)

ウィンドウをリサイズして幅を広げても表示されませんか?

scr0.png scr1.png
2Like

Comments

  1. @Tetsu27

    Questioner

    ご返信いただき、誠にありがとうございます。
    私の実行環境を記述し忘れておりました。(Windows 11 Pro, matplotlib 3.7.2)
    ウィンドをリサイズしてもy軸は現れませんでした。試しにpower pointに貼り付けるなども試したのですが、やはりy軸ラベルが表示されませんでした。

    jupyternotebookを使っているのですが、inline表示ではした図のように軸ラベルが表示されております。ですので、動画に書き込む際に問題が発生していると想定しております。
    動画の書き込みにはImageMagickを使っておりますが、これが問題なのでしょうか。
    image.png

  2. セーブされたgifファイルにY軸ラベルはあります。

    temp.gif

    動画の書き込みにはImageMagickを使っておりますが、これが問題なのでしょうか。

    当方は掲示されたコードをそのまま実行しました。ただし、jupyternotebookではなく、VSCodeでrunしています。

  3. @Tetsu27

    Questioner

    何度もご返答ありがとうございます。

    問題解決いたしました。
    figsizeの横幅が小さすぎて描画範囲からy軸が消されていたようです。上コードをfig = plt.figure(figsize=(6, 5))をplt.figure(figsize=(12, 8))とすることでy軸ラベルが表示されるようになりました。

    お忙しいところ、お時間頂戴しまして誠にありがとうございました。

  4. 解決して何よりです。

  5. @Tetsu27

    Questioner

    お忙しいところ、誠にありがとうございました。
    ただ、figsizeを設定しないとラベルが表示されないというのは違和感がありますので、これから具体的な原因を調査していきます。
    この度はお時間頂戴し誠にありがとうございました。大変助かりました。

Your answer might help someone💌