コードをクリップボードにコピーするには,セルの右上のアイコンをクリックする。
コード [1]: 複数ファイルの強度の描画
#
# Code for showing indicated 10 scans
# 複数ファイルの強度の描画
#
import numpy as np
import matplotlib.pyplot as plt
########################
# 以下は都度書き換えが必要 #
########################
nCol = 10 # 10 組のデータを表示する。
iFirst = 1 # 初めのデータは "yyyymmdd-001.txt"
sHead='20260702-' # 入力ファイル名の頭部文字列
sBody='{:03d}'.format(iFirst) # 入力ファイル名の番号部文字列 "001"
sTail='.txt' # 入力ファイル名の尾部文字列
nSkip=424 # スキップ行数(ヘッダ部の行数)
########################
# 以上は都度書き換えが必要 #
########################
sFile=sHead+sBody+sTail # 入力ファイル名
sLoad = np.loadtxt(sFile,dtype='float',delimiter=',',skiprows=nSkip)
x=sLoad[:,0] # sLoad 二次元配列(行列)の各行 0 列目を一次元配列 x とする
nRow=x.size # 一次元配列 x のサイズ(行の数)
y=np.empty((nCol,nRow))
# 0 番目から 9 番目のファイルの読み込みと描画...
# グラフの描画...
fig, ax = plt.subplots(figsize=(12,3)) # 幅12インチ,高さ3インチ
# fig(図)オブジェクトと ax(軸)オブジェクトの生成
for iCol in range(0,nCol): # 0 から始まり 9 で終わる
sBody='{:03d}'.format(iCol+iFirst) # 入力ファイル名の番号部 “001”-“010"
sFile=sHead+sBody+sTail # 入力ファイル名
sLoad= np.loadtxt(sFile,dtype='float',delimiter=',',skiprows=nSkip)
y[iCol] = sLoad[:,1] # 強度値 y を取り出す
ax.plot(x,y[iCol],label=sBody) # x に対する y の折れ線グラフを表示する
ax.xaxis.set_ticks_position('both') # x軸上下に目盛をつける
ax.yaxis.set_ticks_position('both') # y軸左右に目盛をつける
ax.minorticks_on() # 補助目盛を表示する
ax.set_xlabel(r'$2\Theta (^\circ)$') # x軸ラベルの設定
ax.set_ylabel('Intensity (counts)') # y軸ラベルの設定
#ax.set_xlim(27.44,29.44) # x軸描画範囲の設定
ax.set_ylim(0,) # y軸描画範囲の設定
plt.legend()
plt.show() # グラフ表示コード [2]: カレント・ディレクトリのファイルリスト表示
#
# カレントディレクトリのファイルリスト表示
#
%lsコード [3]: サブディレクトリの作成
#
# 20260702-011 ディレクトリが存在していたら何もしない。
# 20260702-011 が存在しなければ "%mkdir -p 20260702-011" とする。
# "%mkdir -p 20260702-011" コマンドは強制的に上書きをするので注意する。
%mkdir -p 20260702-011コード [4]: 複数ファイルの強度の積算と結果のグラフ表示,ファイル出力
#
# 複数ファイルの強度の積算と結果の表示,ファイル出力
#
import numpy as np
import matplotlib.pyplot as plt
########################
# 以下は都度書き換えが必要 #
########################
# sSave = '20260430-011.csv' # 出力ファイル名
sSave = '20260702-011/00raw.csv' # 出力ファイル名
nCol = 10 # 10 組のデータを積算する。
iFirst = 1 # 初めのデータは "yyyymmdd-001.txt" とする。
sHead = '20260702-' # 入力ファイル名の頭部文字列
sBody = '{:03d}'.format(iFirst) # 入力ファイル名の番号部文字列 "001"
sTail = '.txt' # 入力ファイル名の尾部文字列
nSkip = 424 # 入力ファイルのスキップ行数(ヘッダ部の行数)
########################
# 以上は都度書き換えが必要 #
########################
sRaw=sHead+sBody+sTail # 入力ファイル名
sLoad=np.loadtxt(sRaw,dtype='float',delimiter=',',skiprows=nSkip)
x=sLoad[:,0] # sLoad 二次元配列(行列)の各行 0 列目を一次元配列 x とする
y=sLoad[:,1] # sLoad 二次元配列(行列)の各行 1 列目を一次元配列 y とする
# 2 番目から 10 番目のファイルの読み込みと積算...
for i in range(1,10): # 1 から始まり 9 で終わる
sBody='{:03d}'.format(iFirst+i) # 入力ファイル名の番号部 “002”-“010"
sRaw=sHead+sBody+sTail # 入力ファイル名
sLoad= np.loadtxt(sRaw,dtype='float',delimiter=',',skiprows=nSkip)
y += sLoad[:,1] # 強度値 y だけ積算する
# 積算強度データの出力...
source = np.stack([x,y], axis=1) # 列方向 (axis=1) に積んだ二次元配列を作成する
np.savetxt(sSave,source,delimiter=',',fmt='%.3f')
# グラフの描画...
fig, ax = plt.subplots(figsize=(12,3)) # 幅12インチ,高さ3インチ
# fig(図)オブジェクトと ax(軸)オブジェクトの生成
ax.plot(x,y) # x に対する y の折れ線グラフを表示する
ax.xaxis.set_ticks_position('both') # x軸上下に目盛をつける
ax.yaxis.set_ticks_position('both') # y軸左右に目盛をつける
ax.minorticks_on() # 補助目盛を表示する
ax.set_xlabel(r'$2\Theta (^\circ)$') # x軸ラベルの設定
ax.set_ylabel('Intensity (counts)') # y軸ラベルの設定
#ax.set_xlim(27.44,29.44) # x軸描画範囲の設定
ax.set_ylim(0,) # y軸描画範囲の設定
plt.show() # グラフ表示