pythonでRのggplot2と同様のグラフを出力するライブラリggplotをsageにインストールしてみました。
ggplot2で使用するnumpyとバージョンを合わせるために、SageもVersion 6.0にアップグレードしました。
ggplotをインストールするために、以下のライブラリをインストールします。
Sageの環境でpythonパッケージをインストールするためにsageを-shオプション付きで起動します。
$ /usr/local/sage-6.0/sage -sh (sage-sh) $ easy_install patsy
statsmodelsはeasy_installが使えなかったので、ソースからインストールしました。
(sage-sh) $ git clone git://github.com/statsmodels/statsmodels.git (sage-sh) $ cd statsmodels (sage-sh) $ python setup.py build 正常に終了したのを確認してから (sage-sh) $ python setup.py install
準備ができたので、最後にggplotをインストールします。
(sage-sh) $ easy_install ggplot
yhat氏のggplotのサイト にあるExamplesをSageで実行してみます。
最初に、ggplotを以下の様にローディングします。
|
アメリカの肉のデータ(meatデータフレーム)からbeef, pork, broilersの値の 散布図とスムーズ化した曲線を一緒にプロットする例題です。
ggplotで使用するデータとaesで軸や色の情報を渡して、geom_poinで散布図、stat_smoothで スムーズ曲線を追加するだけで、簡単に図化できるのがRのggplot2の特徴ですが、yhat氏が pythonで作られたggplotは、バージョン0.4.5ではありますが、かなりRのggplot2に近づいています。
<ggplot: (8740555478573)> <ggplot: (8740555478573)> |
pythonではそのままグラフが表示されますが、Sageではそのままでは図が表示されません。
調べたところ、pylabのsavefigを使うことでSageでも表示できることが分かりました。 そのままでは、図が大きく表示されるため、dpiオプションでサイズを調整しています。
|
pylabのsavefigと同様の機能がggplotにも用意されており、ggsaveを呼び出すことで sageで図が表示されます。
Saving 11.0 x 8.0 in image. Saving 11.0 x 8.0 in image. |
散布図の軸の設定もylim, xlimを使って調整することができます。
以下の例は、ダイヤモンドのカラットと価格の関係を散布図で表示した結果です。
<ggplot: (8740556629177)> <ggplot: (8740556629177)> |
Saving 11.0 x 8.0 in image. Saving 11.0 x 8.0 in image. |
ヒストグラム(度数分布図)は、geom_histogramを使って表示します。グラフのタイトルは、ggtitleで指定し、 軸名称はlabsで指定します。
以下の例は、ダイヤモンドの大きさ(カラット)と発掘頻度の関係をヒストグラムで表示した結果です。
<ggplot: (8740556534189)> <ggplot: (8740556534189)> |
Saving 11.0 x 8.0 in image. Saving 11.0 x 8.0 in image. |
aesのcolor指定に変数cutを指定することによってcutの種類毎に別々の密度分布をプロットすることができます。
以下の例は、ダイヤモンドの価格の密度分布をカット別に表示して結果です。
<ggplot: (8740556130545)> <ggplot: (8740556130545)> |
Saving 11.0 x 8.0 in image. Saving 11.0 x 8.0 in image. |
pandasライブラリのmelt関数を使ってカラム別に集計してある結果をvariableカラムにまとめて、 その結果をcolour(colorの別名)にvariableを指定することで種類別のプロットを表示しています。 (とてもすごくて何がどうなっているのかすぐには分かりませんでした)
|
<ggplot: (8740556534053)> <ggplot: (8740556534053)> |
Saving 11.0 x 8.0 in image. Saving 11.0 x 8.0 in image. |
最後に棒グラフをgeom_barを使って表示しています。 この時、シリンダーのfactorを指定しています。(この使い方がイマイチ分かっていません)
<ggplot: (8789227526537)> <ggplot: (8789227526537)> |
Saving 11.0 x 8.0 in image. Saving 11.0 x 8.0 in image. |
|