X軸をログスケール
横軸ログスケールにしたほうがしっくりくる。scikit-rfには直接指定することができないみたいなので、matplotlibのset_xscaleを使う
ns = rf.read_all(tsDir,contains='load',f_unit='mhz'); ntwk1 = NetworkSet(ns); ax=plt.subplot(1,1,1) twk1.plot_s_db(); ax.set_xscale('log') ax.grid(); ax.grid(which='minor',linestyle='-');
結果
せっかく、f_unitでMHz表記になっているのに、Logスケールにすると指数に戻ってしまう。
そこで、目盛にラベルをつけてやる。ぐぐるといくつか方法(テキストで強引に変えてしまう方法とか)書いてあるけど、僕は下記の方法を考えました。
xtk = np.array([1e6,1e7,1e8,1e9,3e9]) xtk_t = (xtk / 1e6).astype(np.int32) ax.set_xticks( xtk ) ax.set_xticklabels( xtk_t )
軸は指数になっているので、メモリ(tick)に指数表記の配列を指定する。それで、そのラベルをf_unitで割った値を指定する。
xtk_tにastypeをつけているのは、つけないと、np.arrayがfloatのままで、1.0、10.0と、".0"がついてしまうから。気にならなければ、割り算だけで。
コメントを追加