投稿

2月, 2023の投稿を表示しています

いろんなデータがではじめたか?

 研究室ができてから2年がたち、だんだん装置もできてきて、新しい測定もできる兆しが出てきている。それが自分がいない場所で起こってたりするので、これはなかなか研究室っぽくて素晴らしいことです。 ただし一番の問題は自分の領分たるSACLAでのPINK-02実験の準備が万全ではないことです。これではどうしようもないので、みんなに負けないように頑張ろうと思います。 年明けに旅行してから家族親族全員が胃腸炎に倒れたので、復活して勢いを出していこうと思います。 人間ドックに初めて行きましたが、デブと診断されました。今年は運動も復活させないといけないということか。

そろそろやるぜ

イメージ
書類も落ち着いてきて、そろそろ実験室に舞台を移さなければ。 初めて買った大きなコンデンサ(6個) 3Dプリンター3台目を開封。写真は2、3台目。  

柏にサッカーしに行く

イメージ
久しぶりに柏にサッカーしに行った。その後ゴミ捨て。せっかくいただいたものだが、ずっと使わなかったし、古すぎるものは捨てましょう。 思いつきで高周波の実験でもしようかしらと思って、RF信号発生器を探す。 柏の強磁場にはいくつかあって、話によると思ったよりも小さくて安いらしい。 買ってみようかしら。手元にないとなかなか進まないですしね。 中くらい 小型 小型  

ゆきふる

イメージ
電通大にも雪がふりました。学内はわりと積もりやすいです。 まだ雪だるまは出現していない模様。  

Python:色をいじる

イメージ
 これはいろんなやり方があるようですが、自分に一番わかりやすいのはRGBの数字を指定する方法です。 [1, 0, 0]=赤 [0, 0, 1]=青 [0, 0, 0]=黒 [0, 0.6, 0]=緑 ([0, 1, 0]だと明るすぎる) [1, 1, 1]=白 くらい覚えておくと使えます。もっと詳しくは ここ でいちらんがみられます。 import numpy as np import matplotlib.pyplot as plt x = np.arange(0, np.pi * 2, 0.2) plt.plot(x, np.sin(x), color = [0, 0, 1]) plt.plot(x, np.cos(x), color = [0, 0.6, 0]) plt.plot(x, np.exp(-x), color = [1, 0, 0]) plt.plot(x, np.arctan(x), color = [0, 0, 0]) plt.legend(['sin(x)', 'cos(x)', 'exp(-x)', 'arctan(x)'] , fontsize = 14 ) また、数字で指定できると、自動的に色をグラデーションするときに便利なこともあります。 import numpy as np import matplotlib.pyplot as plt x = np.arange(0, np.pi * 4, 0.2) for i in range(10): ii = (i + 1) * 0.1 plt.plot(x, np.sin(x + ii * 5), color = [1 - ii, 0, ii])

Python:グラフにレジェンド(凡例)をいれる。順番もいじる。

イメージ
 plt.legend()をつかいます。 import numpy as np import matplotlib.pyplot as plt x = np.arange(0, np.pi * 2, 0.1) plt.plot(x, np.sin(x), color = [1, 0, 0], label = 'sin(x)') plt.plot(x, np.cos(x), color = [0, 0, 1], label = 'cos(x)') plt.plot(x, np.exp(-x), color = [0, 0.5, 0], label = 'exp(-x)') plt.legend() ここからは少しマニアックです。 こんなことがあるかもしれません。粗い実験データにキレイな理論線を重ねたいとき、実験データの裏に理論線を書きたいとします。するとだいたいこういう風に書きます。 import numpy as np import matplotlib.pyplot as plt x = np.arange(0, np.pi * 2, 0.2) dat = np.sin(x) + (np.random.rand(len(x)) - 0.5) / 5 plt.plot(x, np.sin(x), color = [0, 0, 1], label = 'theory') plt.plot(x, dat, color = [1, 0, 0], label = 'experiment', marker = 'o', lw = 0, markerfacecolor = [1, 1, 1]) plt.legend() legendをみるとtheoryがうえで、experimentが下です。theoryの線を裏に置くために先に書いたので、legendの順もそうなっています。でもあなたは実験家で実験のlegendを先に示したいと思っています。そのときは少し複雑ですが・・・ import numpy as np import matplotlib.pyplot as plt x = np.arange(0, np.pi *

Python:右軸にもデータを入れる

イメージ
plt.twinx()をつかいます。 import numpy as np import matplotlib.pyplot as plt x = np.arange(0, np.pi * 2, 0.1) plt.plot(x, np.sin(x), color = [1, 0, 0]) axr = plt.twinx() axr.plot(x, np.cos(x), color = [0, 0, 1]) axr.set_zorder(1) axr.patch.set_visible(False) このとおり

Python:annotation・矢印をいれる

イメージ
annotationはplt.annotateで入れられます。 import numpy as np import matplotlib.pyplot as plt x = np.arange(0, np.pi * 2, 0.1) plt.plot(x, np.sin(x)) plt.annotate('I am here !', (3, 0.5), fontsize = 16) 矢印も同じくplt.annotateで入れられます。plt.arrowというのもあるのですが、こっちのが良いかな!とおもってます。 import numpy as np import matplotlib.pyplot as plt x = np.arange(0, np.pi * 2, 0.1) plt.plot(x, np.sin(x)) plt.annotate("Look !!" , xy = (3, 0.5) , xytext = (4, .5) , arrowprops = dict(arrowstyle = "->") , fontsize = 16 ) 矢印だけにもできます。 import numpy as np import matplotlib.pyplot as plt x = np.arange(0, np.pi * 2, 0.1) plt.plot(x, np.sin(x)) plt.annotate("" , xy = (3, 0.5) , xytext = (4, .5) , arrowprops = dict(arrowstyle = "->") , fontsize = 16 )

Python:グラフの枠組みのサイズを固定する

イメージ
matplotlibでグラフの枠組みサイズを固定したい場合はadd_axesをつかいます。 自動的に複数の図を並べるときはplt.subplotsやgridspecが使われますが、グラフの枠組みのサイズが固定でなく、tickの数字の桁数などに影響されてしまいます。自分はグラフの枠組みを固定したいので、1つのグラフしかない場合でも基本的に下記のやり方でやっています。 import numpy as np import matplotlib.pyplot as plt x = np.arange(0, np.pi * 2, 0.1) fig = plt.figure(figsize = (6, 6)) ax1 = fig.add_axes([0.2, 0.2, 0.6, 0.3]) ax1.plot(x, np.sin(x)) ax2 = fig.add_axes([0.2, 0.6, 0.6, 0.3]) ax2.plot(x, np.cos(x)) fig = plt.figure(figsize = (6, 6)) ax1 = fig.add_axes([0.2, 0.2, 0.3, 0.6]) ax1.plot(x, np.sin(x)) ax2 = fig.add_axes([0.6, 0.2, 0.3, 0.6]) ax2.plot(x, np.cos(x))

机を組み立てた

イメージ
 腰が痛いので、立ってデスクワークができるように電動昇降机を買いました。奮発して良いやつを選びました。 腰が痛いのにむち打って一人で組み立てました。途中で一番大事なハリを伸ばしすぎて、棒ギヤが外れてしまい、あせりにあせって服を脱いでチャレンジしたところ直せました。

Monte Calro simulation of Ising model using python

イメージ
  pythonでIsing modelのシミュレータができました。 ふう。For文がネストしていますが、思ったよりはサクサク動きます。 みんな使ってみてね。 import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation %matplotlib tk fig = plt.figure() size = 50 # lattice size jex = 100 # exchange energy (AFM -> negative, FM -> positive) te = 150 # temperature rand = np.random.randint(2,size = (size, size)) rand = rand * 2 - 1 np.save('test.npy', rand) def ising(dat): s = dat for i in np.arange(size): for j in np.arange(size): ip = i + 1 if i != size - 1 else 0 im = i - 1 if i != 0 else size - 1 jp = j + 1 if j != size - 1 else 0 jm = j - 1 if j != 0 else size - 1 cal = s[i][j] * (s[i][jp] + s[i][jm] + s[ip][j] + s[im][j]) den = cal * 2 p_flip= np.exp(-1 * (den * jex) / te) p = p_flip / (1 + p_flip) s[i][j] = s[i][j] if np.random.rand(1) > p

イジングモデルシミュレーター

イメージ
昔作ったやつです。 なんかたまに見たくなって、動かしてみたりします。 パソコンで相転移をシミュレートできるなんて素晴らしいですし、 結構見飽きないです。 すべては相転移なのだ・・・ ファイルを ここ に置いておきます。 igor proをお持ちの方はすぐ使えると思います。 pythonに移植したいけど、どうやるのかしら…