所以我试图在使用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渲染它没有问题!

07-24 13:58