
Pythonでの三角関数Sinのカーブ動画作成
目次
Pythonでの三角関数Sinのカーブ動画作成
Pythonを利用して三角関数Sinのがーぶ動画を作成してみました。matplotlibで各フレームの画像を作成し、ffmpegで1分弱のMP4フォーマットに変換しています。ffmpegについては、pipではなく個別のインストールが必要となります。
サンプルソース
#------------------------------------------------------------------------------
### FuncAnimationでアニメーションを作成
#------------------------------------------------------------------------------
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.animation import FuncAnimation
import datetime
import os
import shutil
cmapType="rainbow"
#------------------------------------------------------------------------------
#単画像作成
#------------------------------------------------------------------------------
def animeCalc(frame_no):
if frame_no != 0:
plt.cla()
#表示軸無し非表示
plt.axis("OFF")
cm = plt.get_cmap(cmapType)
t1=2*np.pi/360*frame_no
min_x=0*np.pi+t1
max_x=2*np.pi+t1
plt.xlim(min_x,max_x)
plt.ylim(-1.1,1.1)
x = np.linspace(min_x, max_x)
for i in range(11):
y = np.sin(x+np.pi*i/5)
plt.plot(x, y, color = cm(i/10))
#------------------------------------------------------------------------------
#動画作成
#------------------------------------------------------------------------------
def animeView():
#--------------------------------
#開始メッセージ
#--------------------------------
print("動画作成開始")
dt_now = datetime.datetime.now()
print(dt_now)
#グラフを表示する領域を,figオブジェクトとして作成
fig = plt.figure(figsize=(16, 9), dpi=512)
#プロット設定
plt.subplots_adjust(left=0.0,
bottom=0.0,
right=1.0,
top=1.0,
wspace=0.0,
hspace=0.0)
ani = FuncAnimation(fig, animeCalc, interval=1000/60,frames=3000)
#--------------------------------
#ファイル名作成
#--------------------------------
#ファイルパス作成
fileMainNm = "anime"
fileMainNm += "_"
fileMainNm += str(dt_now.strftime('%Y%m%d%H%M%S'));
filePath = outDir + "/" + fileMainNm+".mp4"
#mp4ファイル作成
ani.save(filePath , writer="ffmpeg" , dpi=256 )
#--------------------------------
#終了メッセージ
#--------------------------------
print("動画作成終了")
dt_now = datetime.datetime.now()
print(dt_now)
#------------------------------------------------------------------------------
#メイン関数
#------------------------------------------------------------------------------
def main():
#--------------------------------
#開始メッセージ
#--------------------------------
print("メイン開始")
dt_now = datetime.datetime.now()
print(dt_now)
#--------------------------------
#ファイル名作成
#--------------------------------
fileMainNm = "anime"
fileMainNm += "_"
fileMainNm += str(dt_now.strftime('%Y%m%d%H%M%S'));
#--------------------------------
#ディレクトリ作成
#--------------------------------
new_path = "./out/" +fileMainNm
if not os.path.exists(new_path):
os.mkdir(new_path)
global outDir
outDir=new_path
print(outDir)
#--------------------------------
#実行Phytonファイルのコピー
#--------------------------------
print(os.path.basename(__file__))
shutil.copyfile(os.path.basename(__file__), outDir + "/" + os.path.basename(__file__))
#--------------------------------
#描画
#--------------------------------
animeView()
#--------------------------------
#終了メッセージ
#--------------------------------
print("メイン終了")
dt_now = datetime.datetime.now()
print(dt_now)
if __name__ == "__main__":
main()
ソースの解析
下記設定にて、1秒間に60フレーム、全体で3000フレームの動画構成を設定しています。
ani = FuncAnimation(fig, animeCalc, interval=1000/60,frames=3000)
作成画像
関連記事
- Maximaでトーラスの結び目を描画目次 Maximaでのソースコード 下記設定にて、メッシュの粒度を設定します。 記設定にて、軸座標表示を非表示… 続きを読む »
- Maxima plot3d ファイル出力目次 Maximaでのソースコード(平面) 出力画像 関連記事 最近の投稿 関連記事: Maximaで波模… 続きを読む »
- Maximaで世界地図を描画目次 Maximaでのソースコード(平面) 出力画像 Maximaでのソースコード(地球儀) 出力画像 関連記… 続きを読む »
- Maximaで波模様を描画目次 Maximaでのソースコード 「 grid 」にて、メッシュの粒度を設定します。 「 box 」にて、軸… 続きを読む »
- Maximaで巻貝モデルを描画目次 Maximaでのソースコード 「 grid 」にて、メッシュの粒度を設定します。 「 box 」にて、軸… 続きを読む »
最近の投稿
- DaVinci Resolve インストール手順関連記事: Cytoscapeのインストール PythonをVisual Studioにインストール Pyth… 続きを読む »
- PythonでのLorenz回転動画作成目次 PythonでのLorenz回転動画作成 Pythonを利用してLorenz回転動画を作成してみました。… 続きを読む »
- LaTexの数式エディタ texstudioのインストール手順目次 概要 LaTexの数式エディタであるtexstudioのインストール手順をまとてみました。texstud… 続きを読む »
- 【数学 大学入試過去問題】回転移動行列の帰納法証明問題解説目次 概要 回転移動行列の帰納法証明問題が大学入試で出題されていますので解説します。回転移動行列は、応用範囲が… 続きを読む »
- 基本情報技術者令和3年免除試験 午前問56 Service Level Agreement目次 問題 SLAを説明したものはどれか。 選択 回答 ウ:サービス及びサービス目標値に関するサービス提供者と… 続きを読む »
過去の投稿
- 2023年2月 (2)
- 2023年1月 (4)
- 2022年12月 (1)
- 2022年11月 (6)
- 2022年10月 (3)
- 2022年9月 (2)
- 2022年7月 (3)
- 2022年6月 (1)
- 2022年5月 (1)
- 2022年4月 (3)
- 2022年3月 (1)
- 2022年2月 (4)
- 2021年12月 (1)
- 2021年11月 (1)
- 2021年10月 (2)
- 2021年8月 (2)
- 2021年7月 (1)
- 2021年6月 (2)
- 2021年5月 (2)
- 2021年4月 (2)
- 2021年3月 (6)
- 2020年8月 (1)
- 2020年6月 (3)
- 2020年4月 (1)
- 2019年4月 (2)
- 2018年9月 (1)
- 2018年2月 (1)
- 2018年1月 (3)
- 2017年12月 (1)