私にとって、とてつもない記事を見つけました。
目からウロコではなく岩石くらいの衝撃です。
Pythonで世界地図-7(地球が自転するアニメgif動画)
https://qiita.com/ty21ky/items/abf810a1e26e974930b8
を投稿した時に、いろいろ探したのですが、この記事は2018-07-13とつい最近の記事ですので前回の時はなかったのですね。
参考
Python: matplotlib で動的にグラフを生成する
https://blog.amedama.jp/entry/2018/07/13/001155
上のアニメgifは前回の物ですが、今回はmpl_toolkits.basemapの地図を再描画しているので、intervalをいくら短くしてもこれの数分の1くらいのスピードで、なおかつスムースではありません。
これは、私が使用しているPCのspecが低い(i3-7100, 8GB)からかも知れません。
白黒の地球でこれですから、色を付けるくらいなら関係ないと思いますが、標高図・衛星図などではもっと遅くなると思います。
ドキュメントを読めば、何でも載っていると思うのですが、日本語で書いてあっても理解できないものもあるし、英語などでは、いちいち翻訳して(Google翻訳)も100%理解出来るものもありますが、普通50%もわかれば御の字の場合が多いです。
わかったとしても、サンプルコードがないと、うまく動かない場合も多いです。
# !/usr/bin/python3
# -*- coding: utf-8 -*-
import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.basemap import Basemap
from matplotlib import animation
lat = 0
def _update(frame):
"""グラフを更新するための関数"""
# 現在のグラフを消去する
plt.cla()
my_map = Basemap(projection='ortho', lat_0=lat, lon_0=frame,resolution='c', area_thresh=10000.0)
my_map.drawcoastlines()
def main():
# 描画領域
fig = plt.figure(figsize=(4, 4))
params = {
'fig': fig,
'func': _update, # グラフを更新する関数
'interval': 1, # 更新間隔 (ミリ秒)
'frames': np.arange(359, 0, -1), # フレーム番号を生成するイテレータ
'repeat': True, # 繰り返す
}
anime = animation.FuncAnimation(**params)
# グラフを表示する
plt.show()
plt.close() #クローズしてメモリを開放する。連続して行う場合は必ず必要。
if __name__ == '__main__':
main()