ggplot2地獄とrpy2-2.0.7+python2.6+r2.11(windows7)
質問
を使用していrpy2-2.0.7(この作業にwindows7、コンパイルのバイナリのための新しいrpy2バージョンは混乱ニズムを解明し、二列dataframe rを複数層ggplot2、出力画像へ <.png>.
私は無駄に多くの時間fidgetingに構文;かったので管理を出力するファイルも一点もの(以上)に気付かなかった継続fidgeting周りに自分のコー---
私は心から感謝申し上げず、す(な)例しています。ありがとうございお!!!~エリックバター
import rpy2.robjects as rob
from rpy2.robjects import r
import rpy2.rlike.container as rlc
from array import array
r.library("grDevices") # import r graphics package with rpy2
r.library("lattice")
r.library("ggplot2")
r.library("reshape")
picpath = 'foo.png'
d1 = ["cat","dog","mouse"]
d2 = array('f',[1.0,2.0,3.0])
nums = rob.RVector(d2)
name = rob.StrVector(d1)
tl = rlc.TaggedList([nums, name], tags = ('nums', 'name'))
dataf = rob.RDataFrame(tl)
## r['png'](file=picpath, width=300, height=300)
## r['ggplot'](data=dataf)+r['aes_string'](x='nums')+r['geom_bar'](fill='name')+r['stat_bin'](binwidth=0.1)
r['ggplot'](data=dataf)
r['aes_string'](x='nums')
r['geom_bar'](fill='name')
r['stat_bin'](binwidth=0.1)
r['ggsave']()
## r['dev.off']()
※出力はただの空のイメージ(181b)。
これは普通の誤R自身投げしてい怒周辺ggplot2:
r['png'](file=picpath, width=300, height=300)
r['ggplot']()
r['layer'](dataf, x=nums, fill=name, geom="bar")
r['geom_histogram']()
r['stat_bin'](binwidth=0.1)
r['ggsave'](file=picpath)
r['dev.off']()
*RRuntimeError:エラー:な層プロット
r['png'](file=picpath, width=300, height=300)
r['ggplot'](data=dataf)
r['aes'](geom="bar")
r['geom_bar'](x=nums, fill=name)
r['stat_bin'](binwidth=0.1)
r['ggsave'](file=picpath)
r['dev.off']()
*RRuntimeError:エラー:時 設定 美しい場合にのみ取り値です。問題:記入し、x
解決
使っていrpy2みを通じてNathanielスミスの輝かしい少しモジュールと呼ばれ rnumpy の"APIリンク"リンクをrnumpyページ)をごらんいただきたい。このことができるの?
from rnumpy import *
r.library("ggplot2")
picpath = 'foo.png'
name = ["cat","dog","mouse"]
nums = [1.0,2.0,3.0]
r["dataf"] = r.data_frame(name=name, nums=nums)
r("p <- ggplot(dataf, aes(name, nums, fill=name)) + geom_bar(stat='identity')")
r.ggsave(picpath)
(私の推測について少しはそのままにしてプロットのみでご利用いただけます。いかねます。)
他の利便性は"Rモード"からPythonのipy_rnumpyモジュールです。の"IPython統合"のリンクをrnumpyページ)をごらんいただきたい。
複雑なもののため、通常のプロトタイプRまでの描画コマンドです。エラー報告rpy2はrnumpyでかなり汚.
たとえば、結果の譲渡又はその他の計算)が印刷もので透明度が高くなります。これは迷惑など割り当てる際に大量のデータフレームに。迅速に回避策は、違反の回線追算を評価するもの。たとえば、次のようになります。
In [59] R> long <- 1:20
Out[59] R>
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
[19] 19 20
In [60] R> long <- 1:100; 0
Out[60] R> [1] 0
(静寂の一部の進行-再発の警告にrnumpyい編集rnumpy.py に追加"からの警告を輸入警告"に置き換えに"印刷"にエラー process_revents:無視"'と'warn("エラー process_revents:無視")'.そのように、みないと警告した。)
他のヒント
シャットオフする前にdev()に関与する必要があります。つまり、dev.off()を投げる前に(上記のJDの推測のように)印刷する必要があります。
from rpy2 import robjects
r = robjects.r
r.library("ggplot2")
robjects.r('p = ggplot(diamonds, aes(clarity, fill=cut)) + geom_bar()')
r.ggsave('/stackBar.jpeg')
robjects.r('print(p)')
r['dev.off']()
より複雑なプロットを描く必要があるときに、少し簡単にするために:
from rpy2 import robjects
from rpy2.robjects.packages import importr
import rpy2.robjects.lib.ggplot2 as ggplot2
r = robjects.r
grdevices = importr('grDevices')
p = r('''
library(ggplot2)
p <- ggplot(diamonds, aes(clarity, fill=cut)) + geom_bar()
p <- p + opts(title = "{0}")
# add more R code if necessary e.g. p <- p + layer(..)
p'''.format("stackbar"))
# you can use format to transfer variables into R
# use var.r_repr() in case it involves a robject like a vector or data.frame
p.plot()
# grdevices.dev_off()