来自第 3 方 R 库的 FsLab 和 R 图
FsLab and R Plots from 3rd party R Libraries
FsLab/f# 格式化可以处理来自第 3 方库的任意 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
。
我是不是遗漏了什么?
(弹出图表本身看起来也不太正确,但我想这是另一个问题!)
FsLab 模板在执行此操作时有些不可靠,因此我决定暂时删除曾经存在的部分支持(最好找回它,但它应该可以正常工作:-) ).
我的建议是编写一个辅助函数,将 R 输出捕获到图像中,然后 return 图像。我没有安装 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 ***)
FsLab/f# 格式化可以处理来自第 3 方库的任意 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
。
我是不是遗漏了什么?
(弹出图表本身看起来也不太正确,但我想这是另一个问题!)
FsLab 模板在执行此操作时有些不可靠,因此我决定暂时删除曾经存在的部分支持(最好找回它,但它应该可以正常工作:-) ).
我的建议是编写一个辅助函数,将 R 输出捕获到图像中,然后 return 图像。我没有安装 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 ***)