横軸をログスケールにする

ee9king に投稿

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"がついてしまうから。気にならなければ、割り算だけで。

 

コメントを追加

Plain text

  • HTMLタグは利用できません。
  • ウェブページのアドレスとメールアドレスは自動的にリンクに変換されます。
  • 行と段落は自動的に折り返されます。