ハピタス登録で1,000円分になるURL
ハッカーっぽい〜♪
できた
前回のこの記事のコードを引数をとるように改善。
$ vim myKINRI3DArg.py
デッパリの山の大きさを決める21行目を引数で指定できるようにした。
bashのfor文で画像作成→convertでgifアニメに
こいつをbashで引数つけまくって回す。
$ for i in $(seq 1 10); do echo "$i"; python3 myKINRI3DArg.py -"$i" "$i" && mv myKINRI3Dtest.png myKINRI3Dtest"$i".png; done
それをconvertコマンドでgifアニメにしちゃう
$ convert -delay 60 -loop 0 myKINRI3Dtest0{1..9}*png myKINRI3Dtest{10..20}*png myKINRI3Dtest99merged.gif
こうなる!
次は余白を小さくしてもっとデカく見えるようにしよう。
tightレイアウト+x軸に実行時間を
ランダムな引数にしたらこんな図形も
$ sudo vim /etc/crontab
rr=`echo $*1`; rr2=`echo $*2`; cd /media/WD30EZRX/PT3; python3 myKINRI3DArg.py $rr $rr2 | tee -a myKINRI3DArg.log
角度をつける改良版も
$ python3 myKINRI3DArg2.py '-2' 2 50
下から見るのもできる
$ rr=`echo $*3`; rr2=`echo $*4`; rr3=`echo $*5`; cd /media/WD30EZRX/PT3; python3 myKINRI3DArg2.py "$rr" "$rr2" "$rr3" | tee -a myKINRI3DArg2.log
x軸をズラすと塔が動く
$ rr=`echo $*6`; rr2=`echo $*7`; rr3=`echo $*8`; cd /media/WD30EZRX/PT3; python3 myKINRI3DArg2.py "$rr" "$rr2" "$rr3" | tee -a myKINRI3DArg2.log
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
from matplotlib import cm
import sys
import datetime
from datetime import datetime as dt
#if len(sys.argv) != 2:
#if len(sys.argv) <= 2:
print('引数2個を強制する')
if len(sys.argv) != 3:
print(f"Usage: python {sys.argv[0]} X軸 Y軸")
print(f"Usage: python {sys.argv[0]} -3 2 ")
sys.exit()
myARG1 = int(sys.argv[1])
myARG2 = int(sys.argv[2])
print('myARG1')
print(myARG1)
print('-----')
print('myARG2')
print(myARG2)
print('-----')
now = datetime.datetime.now()
print('実行日時')
print(now.strftime("%Y%m%d_%H%M%S"))
print('-----')
myTODAY = datetime.date.today()
print('今日の日付')
print(myTODAY)
print('-----')
#関数に投入するデータを作成
#x = y = np.arange(-2, 3, 0.5)
x = y = np.arange(myARG1, myARG2, 0.5)
X, Y = np.meshgrid(x, y)
z = np.c_[X.ravel(),Y.ravel()]
#二次元正規分布の確率密度を返す関数
def gaussian(x):
#分散共分散行列の行列式
det = np.linalg.det(sigma)
print(det)
#分散共分散行列の逆行列
inv = np.linalg.inv(sigma)
return np.exp(-np.diag*9
#2変数の平均値を指定
mu = np.array([0,0])
#2変数の分散共分散行列を指定
sigma = np.array([[1,0],[0,1]])
Z = gaussian(z)
shape = X.shape
Z = Z.reshape(shape)
#二次元正規分布をplot
fig = plt.figure(figsize = (15, 15))
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm)
print('狭いレイアウト 余白を無くす')
plt.tight_layout(pad=2.5) # パディングを追加 狭いレイアウト
plt.show()
#s = s + str(sys.argv[2]) + '当時ドル円:' + str(round(recent, 2)) + '円\n ' + str(myTODAY) + '足>元ドル円:' + str(round(recentTODAY,2 )) + '円\n' + kawacom
#kawacom_str = str(myTODAY)
print('x軸X軸に時間実行日時を目盛りとしてプロット')
ax.set_xlabel(datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S'), fontsize=15)
#ax.set_ylabel(datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S'), fontsize=15)
ax.set_ylabel('arg1='+str(myARG1)+' arg2='+str(myARG2), fontsize=15)
ax.set_zlabel(datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S'), fontsize=15)
#plt.savefig('myKINRI3Dtest.png')
plt.savefig('myKINRI3D.png')