在iJulia笔记本结果

时间:2016-03-02 14:00:59

标签: julia jupyter ijulia-notebook

我想生成一个由用户自动或通过超链接下载的数据文件。

例如,iJulia是否有this iPython approach的等价物?

3 个答案:

答案 0 :(得分:2)

如果我正确理解您的问题,您是否希望在Jupyter Notebook中自动生成一个链接,以便人们可以下载?如果是这样,我在Vega.jl中执行此操作(以便人们可以下载图表的PNG文件),具体如下:

              window.setTimeout(function() {
                var pnglink = document.getElementById(\"$divid\").getElementsByTagName(\"canvas\")[0].toDataURL(\"image/png\")
                document.getElementById(\"$divid\").insertAdjacentHTML('beforeend', '<br><a href=\"' + pnglink + '\" download>Save as PNG</a>')
              }, 20);

https://github.com/johnmyleswhite/Vega.jl/blob/master/src/render.jl#L65-L69

基本上,此代码查找输出所在的div(在Julia代码运行时,在呈现输出之前已知),然后使用PNG的base64表示自动生成HTML链接。根据您的内容,这显然可能不同(因为.toDataURL方法必须在方法中包含您的文件类型。)

答案 1 :(得分:2)

我从原始的FileLink定义翻译成了朱莉娅:

type FileLink
    file_path::ByteString
end
type FileLinks
    links::Vector{FileLink}
end
FileLinks(paths::Vector{ByteString}) = FileLinks(map(FileLink,paths))

function Base.writemime(st::IO, ty::MIME"text/html", fl::FileLink)
    write(st, "<a href=$(fl.file_path) target='_blank'>$(fl.file_path)</a>")
end

function Base.writemime(st::IO, ty::MIME"text/html", file_links::FileLinks)
    for fl in file_links.links
        Base.writemime(st, ty, fl)
        write(st,"<br>")
    end
end

FileLinks(readdir("."))

适用于本地托管的IJulia / IPython / Jupyter服务器,但您可能遇到远程服务器(例如Sage)的问题。

答案 2 :(得分:1)

使用NBViewer为Jupyter笔记本提供静态服务也适用于IJulia。

如其主页所示:

enter image description here

在这个例子中,我给NBViewer一个我在Gist中托管的IJulia笔记本的链接,注意GitHub / Gist现在也渲染了Jupyter noteboks: