gpt4 book ai didi

python - 如何使用 rpy2 显示在 python 中创建的热图?

转载 作者:太空宇宙 更新时间:2023-11-04 03:31:18 31 4
gpt4 key购买 nike

我目前正在尝试使用 R 命令(使用 rpy2)从文本文件生成 python 热图。它在 R 中运行良好,但是当我将它带到 python 时,Quartz 界面快速显示然后关闭。我希望能够将 quartz 显示保存到文件中,或者直接将我的热图保存到文件中而不显示它。

这是我一直在使用的代码:

import rpy2.robjects as robjects 

robjects.r('''
library("gplots")
data = read.csv("/Users/.../Heatmap_data.txt")
DF = data.frame(data)
MD = data.matrix(DF,rownames.force=NA)
heatmap.2(MD, scale="none", col=redgreen(100), cexRow=0.1, key=FALSE, symkey=FALSE, trace="none", Colv=FALSE)
''')

我在 OS X Yosemite 上使用 python 2.7。感谢您的帮助。

最佳答案

import numpy as np
import rpy2.robjects as ro
import rpy2.robjects.numpy2ri
ro.numpy2ri.activate()
R = ro.r

data = np.random.random((10, 10))
R.png(file='/tmp/out.png')
R.heatmap(data)
R("dev.off()")

writes to the file /tmp/out.png 不显示图片:

enter image description here .


Preventing the displayed image from immediately closing可以这样做:

脚本.py:

import numpy as np
import rpy2.robjects as ro
import rpy2.robjects.numpy2ri
import rpy2.rinterface as rinterface
import time
import threading

ro.numpy2ri.activate()
R = ro.r

def ion():
def r_refresh(interval = 0.03):
while True:
rinterface.process_revents()
time.sleep(interval)
t = threading.Thread(target=r_refresh)
t.daemon = True
t.start()

ion()
data = np.random.random((10, 10))
R.heatmap(data)

R("dev.copy(png,'/tmp/out2.png')")
R("dev.off()")
try:
# for Python2
raw_input()
except NameError:
# for Python3
input()

raw_inputinput 调用阻止 Python 解释器退出,从而允许窗口保持打开状态,直到用户按下 Enter。

ion 函数 calls rinterface.process_revents() periodically所以显示的窗口将对 GUI 事件使用react,例如调整大小或关闭。

dev.copy(png,'/tmp/out2.png') saves the already-displayed image to afile .

关于python - 如何使用 rpy2 显示在 python 中创建的热图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31051123/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com