2016-09-29 3 views
1

타사 라이브러리에서 임의로 R 시각화를 처리하는 FsLab/f # 형식을 사용할 수 있습니까?타사 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 pl, img = capture(fun() -> 
    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 

그런 다음 사용 차트를 만들 수있을 것입니다 이 igraph 함께 - 잘 모르겠지만, 파일에 igraph 출력을 저장하는 방법에 대한 자습서가 도움이 될 것입니다. 한 가지 사실은 렌더링을 위해 R.show에 전화해야 할 수도 있습니다. 따라서 아마도 시도해보십시오.

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

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