実現したいこと
コロナの感染者数のデータを11か国、365日分集めフーリエ変換をした。
二次元配列に落とし込み
縦軸国ラベル、横軸対数プロットの周波数で等高線を引いた。
1年や半年周期の低周期の部分に縦線を引きたい。
発生している問題・分からないこと
等高線の低周期の部分がすべて同じ色になって比較ができないので、比較できるように細分化したい。
該当のソースコード
python
1max = 4.8e7 2min = -1.6e7 3y = np.arange(11) 4plt.yticks(y) 5plt.contourf(freq,b_arr,np.log10(np.abs(all_spec))) 6plt.contourf(np.log10(np.abs(all_spec))) 7plt.yticks(y) 8plt.colorbar() 9plt.grid(axis='y', linestyle='-', color='white', linewidth=1.2) 10plt.xscale('log') 11plt.xlim(0, 182.5) 12plt.show()
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
より細分化することはできなかった。
補足
質問するような事ではないかもしれませんが、調べてもわからず教えていただきたいです。
よろしくお願いします。
0 と -0.5 の間をもう少し色分けしたいということなら、contourf() の levels 引数で指定すればできると思います。(levels=[-3.5, -3.0, 省略, -0.5, -0.3, -0.1, 0] みたいな)
https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.contourf.html
ただ、フーリエ変換したデータを対数プロットしたとき、低周波数部分はスカスカになりがちなので、プロットデータにそれだけの精度があるかも確認したほうがいいと思います。
