【问题标题】:How to display an image using wxpython and rpy2?如何使用 wxpython 和 rpy2 显示图像?
【发布时间】:2015-04-02 01:01:59
【问题描述】:

所以我试图在使用 wxpython 和 rpy2 时显示 R 生成的图像...

完整的 131 行代码在这里...https://gist.github.com/ACollectionOfAtoms/4286c0fc32838b03f2ea

所以在程序中,用户来到了一个由 lst_view 生成的窗口,它有两个按钮“Ok”和“Visualize”。一旦按下 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())
}

这不会立即生成图表,而是会导致出现一个新菜单,并且只有在我转到“页面设置”时才会显示该图表......

任何人的想法?!

【问题讨论】:

  • 我也不介意对替代品提出建议!
  • 我最初想这样做,但是我在脚本中执行 dev.off() 不起作用,并且在 python 中执行它也失败了。我还花了一些时间弄乱 dev.set(which=1) 或 2 或 3,但我也不能那样做!也许我做得不对……
  • 噢噢噢噢噢噢噢。非常感谢你的链接。我现在将回答我自己的问题。

标签: python r wxpython visualization rpy2


【解决方案1】:

好的,感谢unutbu 我能够解决这个问题!

基本上,我最初想保存图像,然后用 wx 将其可视化,但我在使用 dev.off() 等通过 rpy2 时遇到了问题!

但是! unutbu 提供了一个链接,为我省去了很多麻烦。 你可以使用 ggsave() 来完全绕过整个 jpeg('this.jpg'); dev.off();生意!

再次感谢,unutbu。现在我就用 wx 渲染它没问题!

【讨论】:

  • 文档中有一个示例显示如何使用(和关闭)图形设备:rpy.sourceforge.net/rpy2/doc-2.5/html/…
  • 是的,我以各种方式尝试了文档中提到的 grdevices.dev_off() 方法,但由于某种原因我一直无法正确执行。很可能是我的错,但就像我说的那样,ggsave 非常好,所以你不必考虑你在哪个设备上以及要停用哪个设备等。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-23
  • 2010-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多