2014年10月30日木曜日
Colors (diverging data)
前回はsequential data用のカラーマップについてテストしたが、今回は正負のアノマリなどをプロットする diverging カラーマップについてテストした。
ipython notebookはこちら
http://nbviewer.ipython.org/urls/dl.dropbox.com/s/t8um9tdmauu8qpv/divergent_color.ipynb?dl=0
テストデータのしてはNOAA OISST version 2の海面温度アノマリを使った。データ読み込みとプロットにはIrisを使った。
Irisはイギリスのソフトのためか、日付変更線をまたぐ場合には少し癖があり、そのデモでもある。
2014年10月28日火曜日
Colors (sequential data)
最近、カラーマップに関する考察をいくつか読んだ。
- THE RAINBOW IS DEAD…LONG LIVE THE RAINBOW!
http://mycarta.wordpress.com/2012/05/29/the-rainbow-is-dead-long-live-the-rainbow-series-outline/ - Subtleties of Color
http://earthobservatory.nasa.gov/blogs/elegantfigures/2013/08/05/subtleties-of-color-part-1-of-6/ - Stauffer, R., G. J. Mayr, M. Dabernig, and A. Zeileis, 2014: Somewhere over the rainbow: How to make effective use of colors in meteorological visualizations. Bulletin of the American Meteorological Society, 140710055335002. doi:10.1175/bams-d-13-00155.1
それに対する代替はいくつか提案されている。
以下のipython notebookでは、それらを試してみた。
http://nbviewer.ipython.org/urls/dl.dropbox.com/s/5t9jrhr7va3wscj/colors.ipynb?dl=0
http://nbviewer.ipython.org/urls/dl.dropbox.com/s/5t9jrhr7va3wscj/colors.ipynb?dl=0
下は"cube1"と呼ばれるカラーマップでプロットした例。
ちなみに、この日の海面温度には台風19号と台風20号の通過に伴い、海水の低下した場所が見られる。
Reference
Kuroshio Oyashio Watch 2014/10/20
2014年10月26日日曜日
等値線の位置を求める
Qiu and Chen (2005)などでは、海面高度データのある等値線の位置を黒潮続流の位置とし、Decadal Variationの議論している。
等値線の位置を決めるのは、渦などの紛らわしい等値線があり、目でみていちいち確認しないで自動的に欲しい等値線の位置を決めるのは難しい。
ここでは、図作成ソフトmatplotlibのcontourルチーンから情報を取り出して、等値線の位置を決める工夫をする。
参考にしたのはstackoverflowの
- How can I get the (x,y) values of the line that is ploted by a contour plot (matplotlib)? http://stackoverflow.com/questions/1560424/how-can-i-get-the-x-y-values-of-the-line-that-is-ploted-by-a-contour-plot-mat
- matplotlib - extracting data from contour lines http://stackoverflow.com/questions/5666056/matplotlib-extracting-data-from-contour-lines
- Python: find contour lines from matplotlib.pyplot.contour() http://stackoverflow.com/questions/18304722/python-find-contour-lines-from-matplotlib-pyplot-contour/18309914#18309914
ipythonノートブックは
http://nbviewer.ipython.org/urls/dl.dropbox.com/s/qt804lsufj4whyx/Kuroshio_extension_path.ipynb?dl=0
Step1 力学高度のデータをferretを使い、読み込み、図示する
データはAVISOの絶対力学高度の2009年1月21日のデータを用いる。データはAVISOからダウンロードしておく。
データの読み込みと図示には、前回紹介したferret magicを使う。
Qiu and Chen (2005)では東経141から153度のデータで議論しているので、その範囲だけ抜き出しておく。
等値線は、渦や蛇行のなどのため等値線が4つあるが、黒潮続流にあたる本来欲しい線(東西にのびる線)だけを取り出すのが課題である。
Step 2 Ferretからpythonにデータを読み込む
matlabの機能を使うために、ferretからpythonへとデータを読み込む。これもferret magicを用いる。データがちゃんと読めているかを確認もしておく。
Step 3 等値線の位置を求める
matlabのcontour routineの機能を使って、等値線の位置を求める。等値線の位置は4つ求まっている。
Step 4 等値線の位置情報から、もっとも長い等値線を選ぶ。
等値線の位置が数値的に求まったので、この中から、欲しいpathだけを選ぶ。最も長いpathが黒潮続流にあたる欲しいpathだと考えられる(渦などを避けるために、始点と終点がもっとも離れているpathという条件でも良いかもしれない。)。
まず、pathの長さを求める関数を作成する。
get_distance は2点間の距離を km で求める関数。
get_pathlength はget_distanceを用いてpath位置の情報の配列からpathの長さを求める関数。
上の4つのpathの長さを求め、path #2が最も長いことがわかる(約1432km)。
path #= 0 length= 415.785621835 km
path #= 1 length= 527.959783762 km
path #= 2 length= 1432.08536051 km
path #= 3 length= 563.215908518 km
これが、求めるpathである。
Reference:
Qiu, B., and S. Chen, 2005: Variability of the Kuroshio Extension Jet, Recirculation Gyre, and Mesoscale Eddies on Decadal Time Scales. Journal of Physical Oceanography, 35, 2090-2103. doi:10.1175/JPO2807.1
2014年10月18日土曜日
pyferret, ipython ferret magic
pyferretは、大気海洋分野のお絵描きソフトferretの、pythonとの結合を深めたバージョンである。
さらにipython-ferretmagicはipythonの中でferretを使うのを可能にしてくれる。
サンプルのノートブックはこちら。
http://nbviewer.ipython.org/urls/dl.dropbox.com/s/avefneoyxdxf7ov/ferret_magic_example.ipynb?dl=0
この中で、Levitusのデータを読み込んで、9月の温度26度の等温線を求めてプロットしている。
ferretからpythonにデータを読み込むことも可能である。
登録:
投稿 (Atom)