Gadfly:直接在浏览器中打开堆积图?

时间:2016-09-08 13:28:50

标签: julia gadfly

使用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));

我写了一个创建这样一个图的函数,这个函数创建了一个文件。对于想要使用此函数的人来说,为什么这个函数确实创建了一个文件,而单个图中所有其他绘图函数的结果直接显示在浏览器中,这有点不直观。

那么,是否可以调用一个函数(代替draw?),以便网格定义的组合图直接显示在浏览器中,例如" normal"图

1 个答案:

答案 0 :(得分: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

编辑:现在答案使用了Gadfly专有代码