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

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

那么,是否可以调用一个函数(代替draw?),以便网格定义的组合图像“正常”图一样直接显示在浏览器中?

4

1 回答 1

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

您可以通过重新使用Gadfly 的跨平台“open_file”方法在浏览器中打开此文件:

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

编辑:现在答案使用牛虻专有代码

于 2016-09-08T15:14:41.787 回答