来自第三方R库的FsLab和R plot



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

我一直试图包含一个图表,但没有成功。

我可以得到一个(非常)简单的图表从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

我错过了什么吗?

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

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 ***)

相关内容

  • 没有找到相关文章

最新更新