2016-09-08 14 views
1

グリッド内のプロットを組み合わせて、ファイルに結合し、プロットを節約することが可能である:Gadfly:ブラウザで直接積み上げたプロットを開きますか?あぶで

using Gadfly, Compose 

x=1:0.1:5; 
grid = Array(Compose.Context, (2, 2)); 
grid[1,1] = render(plot(x=x, y = x, Geom.line)); 
grid[1,2] = render(plot(x=x, y = x.^2, Geom.line)); 
grid[2,1] = render(plot(x=x, y = log(x), Geom.line)); 
grid[2,2] = render(plot(x=x, y = sqrt(x), Geom.line)); 
draw(SVG("example.svg", 100mm, 100mm), gridstack(grid)); 

私は、このようなプロットを作成し、この関数は、ファイルを作成する関数を書きました。この関数を使用したい人にとっては、この関数がファイルを作成する理由と、プロットが1つの他のすべてのプロット関数の結果がブラウザに直接表示される理由は少し分かりません。

グリッドによって定義された結合されたプロットがブラウザーに「通常の」プロットのように直接表示されるように関数を(draw?の代わりに)呼び出すことは可能ですか?

答えて

3
function as_temp_html(gadflyplot) 
    thefilepath=tempname() * ".html" 
    write(open(thefilepath,"w"),stringmime("text/html",gadflyplot)) 
    return thefilepath 
end 

あなたはGadfly's crossplatform "open_file" methodを再利用して、ブラウザでこのファイルを開くことができます。

function open_file(filename) 
    if is_apple() 
     run(`open $(filename)`) 
    elseif is_linux() || is_bsd() 
     run(`xdg-open $(filename)`) 
    elseif is_windows() 
     run(`$(ENV["COMSPEC"]) /c start $(filename)`) 
    else 
     warn("Showing plots is not supported on OS $(string(Compat.KERNEL))") 
    end 
end 

EDITを:今、答えはあぶ専用コードに

+0

感謝を使用しています。それで、一時的なhtmlファイルを作成し、それをブラウザで直接開くこと以外の選択肢はないようです。 Gadflyにはこれとほぼ同じメカニズムがあることがわかりました(https://github.com/dcjones/Gadfly.jl/blob/master/src/Gadfly.jlを参照)。 'open_browser_window'関数をGadflyの' open_file'関数に変更し、PladsパッケージへのリンクをGadflyリポジトリへのリンクで置き換えると、私はあなたの答えを受け入れます。機能が提供されている場合は、別のプロットパッケージのプロットを表示するために、1つのプロットパッケージを使用することは実際には意味がありません。 – esel

+0

でも、ディスク(プロセスパイプ、ウェブソケット)に書き込むことなく同じことをするためのツールがありますが、私が知っている限り、これらはあなたが求めていることをするために働いていません(ライブ編集 - プロットまたはフェッチ更新されたブラウザからの再起動)。 [Interact.jl](https://github.com/JuliaLang/Interact.jl)を見てください...役に立つかもしれません –

関連する問題