独立は複数の計算は並列化をするべき。
一部だけを計算する関数subcalを作ってmultiprocessingを使えばいい。import multiprocessing as mpでpool=mp.pool(processor数)、p.map(subcal, range(# of processor))。
テキトーにやっても並列してないときに137秒かかった計算が、6並列で55秒、12並列だと27秒で終わる。全プロセッサ使うと他が動かなくなるので注意しないといけない(それはそう)。
ipythonで実行すると、何をやったか忘れがち。これは、
%notebook -e test.ipynb
を実行して.ipynb形式で保存しておけばいい。
当たり前だが、プログラムを走らせただけの場合はrun .../run .../run .../しかでてこない。
NumPy配列ndarrayを結合
NumPyのsortとargsort関数で任意の行・列を基準にソート
NumPy配列ndarrayに要素・行・列を挿入、追加するinsertの使い方
ndarrayの形状を変化させる。
cmapのパラメータ一覧
不規則間隔データ(x,y,z)からカラーコントアーを作成したい。この方法は基本的に三角形で等高線を考えて全部くっつけるみたいなことをしているはず。
plt.tricontourf(np.log10(cont_Mdot*yr_const/Msun_const),np.log10(cont_L),cont_e,levels=100,cmap=cm.viridis)
plt.colorbar()
規則的なデータなら次で良い
plt.contourf(xs, xs, z,vmin=-10,vmax=10), vmin,vmaxはzの上限と下限を決めてる。
色を塗る
fill_between(x,y1,y2),横方向はfill_betweenx(y,x1,x2)
メモリの文字のサイズ
plt.tick_params(labelsize=13)
軸のメモリを指数表記にする。
import matplotlib.ticker as ptick
しておいて、
ax.yaxis.set_major_formatter(ptick.ScalarFormatter(useMathText=True))
と軸に対して行う。
カラーバーの設定
cbar=plt.colorbar()
cbar.set_label(r"e",fontsize=15)
cbar.ax.tick_params(labelsize=15)
例の設定
plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left', borderaxespad=0, fontsize=18,title="hoge").get_titlre().set_fontsize(18titlefontsize)
‘best’,‘upper right’‘upper left’‘lower left’‘lower right’‘right’‘center left’‘center right’‘lower center’‘upper center’‘center’
二軸グラフ
ax1 = fig.add_subplot(1, 1, 1)
ax2 = ax1.twinx()
みたいに軸を定義して、ax1.plt(X,Y),ax2.plt(X,Y)みたくすればいい。
最後にplt.showっで表示参考サイト
塗り潰し
plt.fill_betweenx(np.log10(L_sph_large),np.log10(Mdot_sph_large*yr_const/Msun_const),np.log10(Mdot_white_migi*yr_const/Msun_const),facecolor='white')
plt.fill_between(np.log10(each_e_0[0]*yr_const/Msun_const),np.log10(each_e_0[1]),np.log10(L_white_ue),facecolor='white')
plt.fill_between(np.log10(each_e_095[0]*yr_const/Msun_const),np.log10(each_e_095[1]),np.log10(L_white_shita),facecolor='white')
リモートで計算結果を保存したい場合、普通にやるとDISPLAYが設定されていないのでエラーになる。
これを避けるには pyplotをインポートする前にmatplotlibのbackendを指定しないといけない。
import matplotlib as mpl
mpl.use('pdf')
import matplotlib.pyplot as plt
目盛りをいい感じにする
plt.subplots_adjust(left=0.15,right=0.99,bottom=0.15,top=0.99) #これは余白をいい感じにする部分
import matplotlib.ticker as ptick
ax.xaxis.set_major_formatter(ptick.ScalarFormatter(useMathText=True)) # こっちを先に書くこと。
ax.ticklabel_format(style="sci", axis="x", scilimits=(6,6)) # 10^3単位の指数で表示する。
ax.xaxis.offsetText.set_fontsize(25)
3dの球面にカラーマップを表示
fig=plt.figure(figsize=(10,8))
ax=fig.add_subplot(projection='3d')
ax.quiver(0,0,0,Vnow[0],Vnow[1],Vnow[2],color='black',arrow_length_ratio=0.1,length=1.5,label="x2",linewidth=3)#これはベクトルを表示する部分
surf=ax.plot_surface(xpr, ypr, zpr, rstride=1, cstride=1, facecolors=cm.jet(N/Nmax), linewidth=0, antialiased=False, shade=False,alpha=1,zorder=0)
#N/Nmaxの色を、(xpr,ypr,zpr)という点に塗る。
ax.view_init(20,45)
plt.tick_params(labelsize=20)
plt.legend(fontsize=17)
plt.tick_params(labelsize=17)
m = cm.ScalarMappable(cmap=cm.jet)
cb.ax.tick_params(labelsize=17)
cb.ax.tick_params(labelsize='large')
plt.subplots_adjust(left=0.01,right=0.99,bottom=0.01,top=0.99)
plt.show(block=False)
wget https://repo.anaconda.com/archive/Anaconda3-version-Linux-x86_64.sh
bash Anaconda3-version-Linux-x86_64.sh
versionはサイトで確認
eval "$(/home/tomoki/anaconda3/bin/conda shell.bash hook)"
conda init (起動時有効化)
conda config --set auto_activate_base false (上を無効にする、こっちの方が使いやすい)
conda create -n 環境名 python=バージョン
conda install numpy scipy pandas matplotlib seaborn jupyterlab
conda install -c conda-forge jupyterlab
conda install pip
Anacondaを毎回手動で有効化したい場合、ターミナル起動後に以下を実行します:
eval "$(/home/tomoki/anaconda3/bin/conda shell.YOUR_SHELL_NAME hook)"
conda activate bash
conda info -e
で現在ある環境を確認する。