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)



最近、カラーマップに関する考察をいくつか読んだ。

いずれも"rainbow"(またの名を"jet")と呼ばれるカラーマップの弊害を述べている。

それに対する代替はいくつか提案されている。

以下のipython notebookでは、それらを試してみた。
http://nbviewer.ipython.org/urls/dl.dropbox.com/s/5t9jrhr7va3wscj/colors.ipynb?dl=0

データはGHRSST OSTIA SSTという海面温度で、2014年10月15日の117-150E, 17-40Nの範囲をIRISを使ってIPRC APDRCから読み込み、プロットさせている。

下は"cube1"と呼ばれるカラーマップでプロットした例。

ちなみに、この日の海面温度には台風19号と台風20号の通過に伴い、海水の低下した場所が見られる。


Reference
Kuroshio Oyashio Watch 2014/10/20



2014年10月26日日曜日

等値線の位置を求める



Qiu and Chen (2005)などでは、海面高度データのある等値線の位置を黒潮続流の位置とし、Decadal Variationの議論している。

等値線の位置を決めるのは、渦などの紛らわしい等値線があり、目でみていちいち確認しないで自動的に欲しい等値線の位置を決めるのは難しい。

ここでは、図作成ソフトmatplotlibのcontourルチーンから情報を取り出して、等値線の位置を決める工夫をする。

参考にしたのはstackoverflowの


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を使う。



このデータでは、0.8mの等値線が黒潮続流位置としてはよさそうである。本当はheat fluxによるsteric heightの変動を考慮にいれないとならないが(Qiu and Chen, 2005)、ここではその手順は省略。
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-ferretmagicipythonの中でferretを使うのを可能にしてくれる。

サンプルのノートブックはこちら。
http://nbviewer.ipython.org/urls/dl.dropbox.com/s/avefneoyxdxf7ov/ferret_magic_example.ipynb?dl=0

この中で、Levitusのデータを読み込んで、9月の温度26度の等温線を求めてプロットしている。
ferretからpythonにデータを読み込むことも可能である。