2016-09-29 25 views
1

FsLab/f#格式化可以从第三方库中处理任意R可视化吗?来自第三方R库的FsLab和R图

我一直试图包括一个igraph图表没有成功。

我可以得到一个非常简单的图形阴谋评估此弹出了FSI的:

#load "packages/FsLab/Themes/DefaultWhite.fsx" 
#load "packages/FsLab/FsLab.fsx" 

open Deedle 
open FSharp.Data 
open RProvider 
open RProvider.graphics 
open RProvider.igraph 

let grpa = R.graph__from__literal("A--B, B-c") 
let pl = R.plot_igraph(grpa) 

但如果我尝试把它列入日记:

(*** include-value:pl ***) 

我只是得到输出RDotNet.SymbolicExpression包括在内。

我失去了一些东西在这里?

(弹出图本身也看起来不正确的,但我想这是一个不同的问题!)

回答

2

的FsLab模板是在这样做有点不可靠,所以我决定删除所使用的部分支持暂时待在那里(这将是很好的把它拿回来,但它应该正常工作:-))。

我的建议是编写一个帮助函数,将R输出捕获到图像中,然后返回图像。我不具有R安装到测试,但这些方针的东西应该R.plot至少工作:

let capture f = 
    let file = Path.GetTempFileName() + ".png" 
    R.png(file) |> ignore 
    let res = f() 
    R.dev_off() 
    let img = Image.FromStream(new MemoryStream(File.ReadAllBytes file)) 
    File.Delete(file) 
    res, img 

然后你就可以使用创建图表:

let pl, img = capture(fun() -> 
    R.plot(...)) 

至于使用这与igraph - 我不知道,但教程如何保存igraph输出到文件应该有所帮助。我注意到的一件事是,有时需要拨打R.show来呈现事物,因此可能试试:

let _, img = capture(fun() -> 
    R.plot_igraph grpa |> R.show) 

(*** include-value:img ***)