初めてナノテラスに行ってきた

イメージ
QST岩澤Gの実験で東北大ナノテラスに、ARPESに磁場を少しかけるお手伝いをしにいきました。ナノテラスは東北大の新型放射光です。 行く前からわかってたのですが、今回は残念ながらチャンバーの不具合が発生しているために、本番の実験はできない状態でした。ですけども磁場のテスト(磁場発生に使うバイポーラ電源の搬入と動作テスト)ができたので、よかったよかったと言って帰りました。 ナノテラスに行ったのは初めてで、行って良かったです。まだ新品でさっぱりしてるし、内装もかっこよく、まだまだスペースがたくさんある状態の姿を見られました。これからどんどん最新の結果が出るんでしょうね。 一緒に行った石井くんも活躍しすぎてました。 実験は次年度前期のどこかになりそうとのこと・・・ バイポーラ電源は初めて触る信号発生器が内蔵されているタイプのものでしたが、マニュアルを見ながら液晶画面上でプログラムすることができ、任意波形をプチプチ発生させることに成功。なかなかこれは面白いなと思いました。1台で完結するのは良いですね。電通大の坂野さんからお借りしたものですが、そのままナノテラスに滞在中。 それにしても大学のメインキャンパス内に新型放射光があるなんていいですねー。さすが国際卓越大。日本をしょって立つ大学ですね・・・。アクセスが良いところに、すごい装置があるなら、使いますよね。長い目で見たら人材とかで有利な気がします。東北大には頑張ってほしいです。付近の土地もたくさん空いているので、バンバン施設が作られるようだと良いのですが。

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 * 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 = 'theory1')
plt.plot(x, -np.cos(x)*0.5, color = [0, 0.6, 0], label = 'theory2')
plt.plot(x, dat, color = [1, 0, 0], label = 'experiment', marker = 'o', lw = 0, markerfacecolor = [1, 1, 1])

handles, labels = plt.gca().get_legend_handles_labels()
order = [2, 1, 0]
plt.legend([handles[idx] for idx in order],[labels[idx] for idx in order]
           , loc = [0.65, 0.7]
           , fontsize = 12
          )


とするとこんな感じにうまくいきます。

コメント

このブログの人気の投稿