我正在使用RPy2制作一些情节。该图显示但X11窗口立即消失。
我输入的所有内容如下,其中CCFS是一个数据矩阵
import rpy2.robjects as robjects
r = robjects.r
pca = r.princomp(CCFS)
r.plot(pca,main="Eigenvalues")
r.biplot(pca,main="biplot")
r['dev.off']() #*EDIT* the problem persists even if I remove this line.
我没有包含某些内容吗?我知道有一些事情要绘制,因为princomp返回一个非null的ListVector。
加
input() # for Python3
# raw_input() # for Python2
到脚本的末尾,以防止程序结束,直到用户按Enter键。
正如Zack所指出的那样,在交互式图形设备上调用dev.off()
只会导致设备关闭(以及它显示的内容会消失)。另一方面,在检查绘图之前,通常需要关闭非交互设备(请参阅rpy2's documentation on graphical devices)。
我猜你的Python代码被称为独立的程序/脚本而不是交互式Python会话的一部分。换句话说,我怀疑你在shell中有类似python myscript.py
的东西(myscript.py
的内容是你上面的代码);当脚本结束时,嵌入式R显然被终止,并带有交互式图。这也许是扎克的想法。尝试python -i myscript.py
,然后在Python控制台import sys; sys.exit(0)
中查看退出Python意味着关闭R交互设备。