所以我试图在使用wxpython和rpy2的同时显示R生成的图像...
完整的131行代码在这里... https://gist.github.com/ACollectionOfAtoms/4286c0fc32838b03f2ea
因此,在程序中,用户会到达一个由lst_view生成的窗口,该窗口具有两个按钮“确定”和“可视化”。按下Visualize后,将执行此代码。
def graph(self,event):
f = open('results.csv', 'wb')
csvwriter = csv.writer(f)
for i in self.res:
for j in range(1,len(i)):
row = [i[0] ,str(i[j])]
csvwriter.writerow(row)
f.close()
r = robjects.r
r('''
source('vis.r')
''')
r_main = robjects.globalenv['main']
r_main()
return True
在vis.r中,我们有:
graph <- function() {
res = read.csv("results.csv", header=FALSE)
res = mutate(res, Percent = 100*(V2/(sum(res$V2))))
ggplot(data=res, aes(x=V1, y=V2, fill=Percent)) + geom_bar(stat="identity") + coord_flip() + xlab('Facility') + ylab('Number Of Violations')
}
main <- function(){
print(graph())
}
这不会立即生成图形,而是导致出现一个新菜单,并且仅当我转到“页面设置”时才显示图形。
有任何想法吗?
最佳答案
好了,感谢unutbu,我能够弄清楚这一点!
基本上,我最初想保存图像,然后用wx对其进行可视化,但是我在使用dev.off()以及通过rpy2这样的处理时遇到了问题!
但! unutbu提供了一个链接,为我省了很多麻烦。您可以使用ggsave()完全规避整个jpeg('this.jpg'); dev.off();商业!
再次感谢,恩图布。现在我将用wx渲染它没有问题!