2013-02-25 8 views
5

IPythonノートブックでrpy2(ggplot2を呼び出す)を使用して保存できますか(他のノートブックと同様にNBViewerで共有します)http://nbviewer.ipython.org/? rpy2 ggplotsをノートブックやインタラクティブに表示させることに問題はありますか?誰かが例セッションと、IPythonでrpy2を使ってノートブック内でggplot2を作るという出力を提供できるなら、助けになるでしょう。IPythonノートブックでrpy2を使用していますか?

答えて

1

rpy2を使用するrmagic拡張機能で可能です。あなたはprint()の図を表示する必要があるようですが、セッションの例を次に示します。http://nbviewer.ipython.org/5029692

rpy2を直接使用する場合は、それが可能である必要があります。 rpy2 documentation for ggplot2をご覧ください。ノートブックに取り込むには、PNG/SVGデバイスに描画し、Python側から読み込みます(これはrmagicの機能です)。

+0

私は私が直接rpy2を使用したい 'rmagic'を使用したくないが、私はページ上のrpy2とノートブックの例が表示されませんあなたはドキュメントからリンクしています...デバイスに描画してから読み込む方法がわからないのですか?それは自動化されていませんか? – user248237dfsf

+2

rmagicはpngデバイスの使用と出力の自動化です。 rpy2を直接使用したい場合は、自分で行う必要があります。 [rmagicのソースコード](https://github.com/ipython/ipython/blob/master/IPython/extensions/rmagic.py)を見ることができます。 –

+0

それはそれほど価値のないものですが、ipythonのノートブックは基本的にmatplotlibの代わりにggplot/rpy2を使う人には役に立ちません。 – user248237dfsf

3

これはrmagicのコードを見ずに書かれています。 彼らはそれをもっと賢明な方法で持っています(私は11行のコードを持っています)。

import uuid 
from rpy2.robjects.packages import importr 
from IPython.core.display import Image 

grdevices = importr('grDevices') 
def ggplot_notebook(gg, width = 800, height = 600): 
    fn = '{uuid}.png'.format(uuid = uuid.uuid4()) 
    grdevices.png(fn, width = width, height = height) 
    gg.plot() 
    grdevices.dev_off() 
    return Image(filename=fn) 

それを試して:

from rpy2.robjects.lib import ggplot2 
from rpy2.robjects import Formula 
datasets = importr('datasets') 
mtcars = datasets.__rdata__.fetch('mtcars')['mtcars'] 
p = ggplot2.ggplot(mtcars) + \ 
    ggplot2.aes_string(x='mpg', y='cyl') + \ 
    ggplot2.geom_point() + \ 
    ggplot2.geom_smooth() + \ 
    ggplot2.facet_wrap(Formula('~ am')) 

ggplot_notebook(p, height=300) 
+0

このコードは、rpy2からデータセットをロードして使用することが初めてできました。このページのデータセットは機能しませんでした:http://rpy.sourceforge.net/rpy2/doc-2.2/html/graphics.html#package-ggplot2 – zach

+0

@zach:Rは内部的にデータセットを扱う方法を変更しました。 rpy2はこれらの変更に対応するように変更されました(ただし、即時の結果は最もフレンドリーなインターフェースではありません)。これは更新されていないことを文書に書かれていた場所を除外することはできませんが、おそらくrpy2-2.2.xのマニュアルを見ているかもしれませんが、rpy2-2.3.xを使用している可能性があります。いずれにしても、何か修正されたものを見る最良の機会は、問題(電子メール、プロジェクトのページなど)を報告することです。 – lgautier

+0

ありがとうございます。時には問題が何であるかを知ることも難しい.....しかし、私は報告のより良い仕事をするでしょう。あなたの素晴らしい仕事に感謝します。 – zach

関連する問題