如何使用笔记本jupyter在html中发布R代码

2024-01-31

我看到很多人谈论使用 jupyter 笔记本将代码转换和共享为 HTML,就像小菜一碟,但它对我来说变成了一场噩梦!

我确实可以通过使用下拉菜单下载代码将其转换为 html,但它只能在我自己的计算机上访问,如果我将其作为链接发送给其他人,他们会看到:无法访问此网站。HTML 下载只提供本地主机上的链接,并且不可共享。有谁知道它的解决方法吗?我确实使用了 github,但这似乎仅适用于 Jupyter Python,而不适用于 R。

这里有什么帮助吗?


最后你提到使用 Github。您可以直接在其中共享笔记本.ipynb使用该表单(实际上是 json 编码)或 Github 的 Gist 站点,您发送链接的任何人都可以将其视为完美呈现的静态。您当然可以发布到 html,但随后您需要托管 html 或使用githack http://raw.githack.com/链接到它。始终可以选择转为 PDF 并通过电子邮件发送。既然您谈到转换,我认为您不需要它处于活动状态;但是,使用 MyBinder.org 也是可能的,请参阅示例here https://github.com/binder-examples/r您可以在其中单击顶部的“启动”按钮并启动其他人以前制作的笔记本。

我将逐步解释每一条建议并进行进一步说明。


笔记本{共享}空间

笔记本{共享}空间 https://notebooksharing.space/它被誉为“共享笔记本的最快方式”,适用于 R markdown 和 Jupyter 笔记本。允许使用假设直接在笔记本上进行注释和突出显示。如果您限制共享链接,则可以将其设为私有。

GitHub 和 nbviewer(或 nbsanity.com)共享笔记本

如果笔记本是公开的,您可以使用 Github 来共享笔记本。想象一下,您创建了一个公共存储库,并将一个笔记本放在其中.ipynb文件形式。 (注意:所有这些步骤都可以直接在 Github 的 Web 界面中完成,无需在本地计算机上安装 git。)让我们使用here https://github.com/binder-examples/r作为一个理论例子。如果你去那个仓库你会看到一个笔记本index.ipynb列出。点击链接即可直接查看。 (你现在应该是here https://github.com/binder-examples/r/blob/master/index.ipynb.) 笔记本可能会渲染或者可能会尝试超时。 Github 的渲染并不完美,所以不要依赖它。更好的是使用 nbviewer 网站。要使用 nbviewer 站点,您需要从地址栏复制笔记本的 URL。对于此示例,您需要复制:

https://github.com/binder-examples/r/blob/master/index.ipynb

使用剪贴板中的该 URL,转至 nbviewer 站点:https://nbviewer.jupyter.org/ https://nbviewer.jupyter.org/。当您到达 nbviewer 的首页时,将 URL 粘贴到顶部“输入 Jupyter Notebook 的位置...”下方的表单中,然后单击Go!。这将带您进入一个漂亮的笔记本页面,而无需任何 Github 标头/残渣。请注意,笔记本中是 Python 代码还是 R 代码并不重要。在 nbviewer 上看起来会很不错。要与某人共享此视图,请复制此页面地址栏中的 URL。在这种情况下,它将是:

https://nbviewer.jupyter.org/github/binder-examples/r/blob/master/index.ipynb

您可以分享那个链接现在和任何人。

该链接告诉 nbviewer 站点从 Github 获取笔记本代码并渲染它。如果您稍后更新,他们仍然可以使用相同的链接并打开更新的表单。 (请注意,nbviewer 有时可能需要 10 分钟左右才能从 Github 收集更新。)还可以使用 Github 的 URLS 和 nbviewer 共享笔记本的特定版本。您需要了解如何浏览 Github 上特定提交的文件并使用这些 URL。

需要注意的是,nbviewer 渲染页面的链接遵循引用 Github 存储库的模式,因此可以在不执行所有这些步骤的情况下建立链接。

另外需要注意的是,右上角有一个带有三个环的符号,就在下载按钮的左侧。如果您单击这些环,您可以通过 MyBinder.org 启动该笔记本的活动版本。当会话启动时,该笔记本将运行,无需安装任何其他软件包或任何东西如果存储库已配置,则底层技术已识别配置文件并构建了正确的环境。如果存储库未设置 Binder,它仍然会打开笔记本,但当您尝试运行时可能会收到错误,因为默认情况下环境不完全兼容。

如果您使用的是移动设备并且您的.ipynb文件在 GitHub 之类的地方在线,您也可以在以下位置尝试并行技术nbsanity.com https://nbsanity.com/。 (源代码位于https://github.com/hamelsmu/nbsanity https://github.com/hamelsmu/nbsanity.) nbsanity 是开发者 Hamel Husain 专门针对移动设备设计的,它可以更好地处理允许滚动的问题,并且“它与 nbviewer 不同,因为它使用 @quarto_pub 作为渲染器,它可以以更合理的方式在不同平台上显示笔记本。结果是,如果您的笔记本中恰好有这样的指令,它也会遵守所有四开指令”。

Gist 站点和 nbviewer 共享笔记本

此过程与“GitHub 和 nbviewer 共享笔记本”中描述的过程非常相似。关于笔记本放置位置的前几个步骤.ipynb文件不同。您可以访问 Github 的 Gist 网站:https://gist.github.com/ https://gist.github.com/。该网站旨在共享代码片段或几个文件,并不具备完整的 Github 存储库所具有的所有功能。然而,它非常适合您的使用。您可以将内容粘贴到.ipynb文件或上传到那里,然后使用 nbviewer 上的 URL,如“GitHub 和 nbviewer 共享笔记本”中所述。

Gist 站点和 githack 共享笔记本的 HTML

此过程与“Gist 站点和 nbviewer 共享笔记本”中描述的过程非常相似。但是,您上传到 Gist 网站的内容和用于共享渲染的技术有所不同。这次您需要将您提到的 HTML 文件放在 Gist 站点上。此时它看起来像 HTML 代码而不是笔记本。将 Gist 站点页面的 URL 复制到剪贴板。访问 raw.githack.com 网站:http://raw.githack.com/ http://raw.githack.com/。将 URL 粘贴到顶部显示要粘贴 URL 的表单行中。现在您将进入一个 HTML 呈现页面。您可以从地址栏复制 URL 并与任何人共享,类似于使用 nbviewer 查看笔记本的方式。

Github 存储库和 githack 共享笔记本的 HTML

这与“Gist 站点和 githack 共享笔记本的 HTML”中描述的内容非常相似。不同之处在于您将使用实际的 Github 存储库来存储笔记本的 HTMl 版本。

共享笔记本的 PDF

你没有提到这条路线。所以我会保持简短。根据您安装的 Jupyter 或使用它的位置,我发现保存 PDF 表单不一致。有一个地方应该是可能的,那就是here https://github.com/fomightez/jupyter_hide_code。如果您去那里并按launch binder按钮,您可以启动一个可进行 PDF 保存的会话。你会想要专门使用Export to PDF图标将出现在笔记本上方的顶部菜单栏上。

分享笔记本的活动形式

我也将保持简短,因为它在上面的部分中以各种形式进行了讨论,并且比使用 nbviewer 更高级。

“GitHub 和 nbviewer 共享笔记本”部分的末尾描述了执行此操作的一种方法。您也可以在不使用 nbviewer 的情况下执行此操作。让我们回到示例存储库here https://github.com/binder-examples/r。复制该页面顶部的 URL:

https://github.com/binder-examples/r

现在访问 MyBinder.org 网站:https://mybinder.org/ https://mybinder.org/将该 URL 粘贴到表单顶部显示“GitHub 存储库名称或 URL”的位置,然后单击“启动”。这将使用由该存储库中看到的特殊文件配置的环境来启动临时会话。您将能够单击笔记本index.ipynb并运行它。切勿共享正在运行的会话链接,因为它是临时的。

要共享某些内容,以便其他人可以使用您的笔记本启动自己的会话,您需要探索使用更多表单选项:https://mybinder.org/ https://mybinder.org/生成可以与他人共享的链接。例如,您可以添加特定笔记本的路径,以便在会话启动时以已打开的该笔记本开始。填写完要复制的用于共享 URL 的表单后,您将看到在“复制下面的 URL 并与其他人共享您的活页夹:”下生成的 URL。您会看到该表单还允许为可点击徽章制作代码,就像您在https://github.com/binder-examples/r https://github.com/binder-examples/r .

请注意,使用可运行的笔记本启动会话是有效的,因为该存储库已配置为安装 irkernel。如果没有进行一些配置,就无法使用 R 运行任何存储库中的任何笔记本。 (它默认只具有 Python 内核。)但是,我引用的示例存储库可以用作模板,使用以下命令创建您自己的新存储库:Use this template button here https://github.com/binder-examples/r简化执行此操作所需的步骤。还有打孔 https://karthik.github.io/holepunch/帮助执行类似的步骤来共享基于 R 的代码。

当您想要共享私人笔记本时结合技术.ipynb文件并让某人查看或运行它

您也可以将笔记本寄给人们.ipynb文件,然后他们有一些选择。他们可以使用NB预览 https://jsvine.github.io/nbpreview/它允许您选择要在浏览器中查看的本地文件。笔记本只能通过此工具查看。笔记本文件实际上仅位于本地计算机上的浏览器本地缓存中,因此它非常适合共享敏感笔记本,并为不常用笔记本的人提供建议,以应有的方式呈现它。如果这是笔记本中的超级敏感工作,并且相关人员不信任,因为 nbpreview 是一个在线站点,即使您指向的内容仍然只是本地的,也可以在本地安装和运行 nbpreview,请参阅here https://github.com/jsvine/nbpreview。也可以在本地安装nbviewer并查看。或者他们可以使用他们的 Jupyter 系统运行您发送的笔记本文件。由于其中一些选项的要素依赖于高级技能和了解如何安装东西,因此它们可能并不适合所有相关人员。

规避这些障碍的一种方法是建立一个能够通过 MyBinder 提供完全适合运行私人笔记本的环境的存储库,然后建议用户如何启动会话并上传您单独与他们共享的笔记本,例如通过电子邮件。你可以看到here https://mybinder.readthedocs.io/en/latest/faq.html#how-secure-is-mybinder-org有关 MyBinder.org 安全性的更多信息。

等等……还有更多

随着笔记本电脑变得越来越流行,使用和共享笔记本电脑的方式也越来越多。这个答案只涉及到一些更开放、公开的方式。当您通过授权添加 Jupyter Hub 时,还会有更多内容,因为您可以在 JupyterHub 网络中共享指向您自己的笔记本的链接。现在也有商业产品。您也可以随时使用 Google Colab 或 Azure 笔记本来共享它们。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用笔记本jupyter在html中发布R代码 的相关文章

  • IE10中的图像插值

    这是我的用例 我有一个采用响应式设计的网页 该页面垂直分成两半 我想在右侧显示图像 呈现为 PNG 或 JPG 的 PDF 页面 调整窗口大小后 图像的大小应立即更改 我以为我已经解决了这个问题 我将服务器上的图像渲染得足够大 以适应最大可
  • Git 不断提示我输入密码

    我已经使用 Git 一段时间了 但是不断要求输入密码开始让我感到厌烦 我使用的是 Mac OS X 和 GitHub 并且按照 GitHub 的说明设置了 Git 和我的 SSH 密钥设置 Git 页面 http help github c
  • 未捕获的类型错误:无法读取未定义的属性“prop”

    我有 6 个输入复选框 如果选中的复选框超过 3 个 则最后一个复选框将被取消选中 为了更好地理解 请参阅我之前的question https stackoverflow com questions 35195235 if checkbox
  • IE8 中空 div 层的 z-index 问题

    我在 IE8 中遇到 z index 问题 其他尚未测试 以下 JS 创建一些 html css document write img src border 0 document write div style background col
  • Gmail 和 Google Chrome 12+ 中的“从剪贴板粘贴图像”功能如何工作?

    我注意到一个来自 Google 的博文 http gmailblog blogspot com 2011 06 pasting images into messages just got html其中提到 如果您使用的是最新版本的 Chro
  • 如何更改元素的 CSS 类并在单击时删除所有其他类

    我如何处理 AngularJS 2 中的一种情况 即单击一个元素需要更改其自己的样式 并且如果其他元素具有该样式 则需要将其删除 最好在一个函数中 如同Angular js 如何在单击时更改元素 css 类并删除所有其他元素 https s
  • 如何在html中设置按钮的文本大小

    您好 我想在我的网站上有一个按钮 并且我想调整按钮上的文本大小 我该怎么做呢 我的代码如下
  • Rails 中的 PDF 导出

    我需要将包含一些图表的 HTML 页面导出为 PDF 有哪些好的 gem 可以做到这一点 PDFKit http railscasts com episodes 220 pdfkit http railscasts com episodes
  • 如何动态隐藏和显示html元素

    html 输入元素使用链接标记隐藏和显示 示例 雅虎邮件密件抄送隐藏和显示 这是用 JavaScript 完成的 对于简单的 Javascript 即不使用jQuery你可以这样做 document getElementById idOfE
  • 优化 CSS 交付 - Google 的建议

    谷歌建议在 head 中使用非常重要的 CSS 内联 并在内部使用其他 CSS
  • 使用过渡+不透明度更改+溢出隐藏时出现问题

    如果您看到我共享的代码示例 您可以看到覆盖层超出了框的范围 我将问题追溯到transition属性 我想删除div之外的内容 溢出没有按预期工作 删除transition有效 但如果可能的话我想保留它 任何帮助表示赞赏 代码笔链接 http
  • 如何将 div (或任何元素)覆盖在表格行 (tr) 上?

    我想在恰好有多个列的表行 tr 标记 上覆盖一个 div 或任何可以使用的元素 我尝试了几种方法 似乎都不起作用 我在下面发布了我当前的代码 我确实得到了一个覆盖 但不是直接覆盖在该行上 我尝试将覆盖顶部设置为 div Bottom css
  • HTML代码可以像CSS文件一样附加到HTML页面吗?

    HTML 代码可以像 CSS 文件一样附加到 HTML 页面吗 这样 如果所有页面中都复制了部分 HTML 代码 我可以将其放在一个文件中 然后轻松修改它 谢谢 Ahmed 是的 可以 使用框架 但不推荐 Example 此代码将允许您重用
  • 第一次从按钮提交时,只有单击两次后才会打开模态框

    我有一个模式弹出窗口可以通过单击按钮打开 不幸的是 当第一次在浏览器中提交时 我只能在单击两次后才能看到弹出窗口 但是 一旦弹出窗口打开并关闭 我就可以在下一次尝试中单击一次来打开模式 如果我刷新浏览器也会发生同样的情况 这看起来很奇怪 任
  • 数据表“footerCallback”函数未在页脚中显示结果

    我尝试获取每列的总和并将结果显示在页脚中 我在用着 页脚回调 https datatables net reference option footerCallbackDatatables提供的功能 但是它在页脚中没有显示任何内容 数据表解释
  • CSS:如何在模糊的背景上剪切文本?

    我想重新创建以下样式 我想出了以下内容 问题是剪切不会影响模糊滤镜 我不知道如何解决它 这是我的 HTML 代码 glass width 40 height 100 position absolute background rgba 255
  • 如何仅突出显示嵌套表的最里面的表行?

    我有几个嵌套表 我想突出显示鼠标指针下方的最里面的行 我怎样才能做到这一点 一些提示 我使用嵌套表来显示递归表格数据 表可以嵌套 10 层 嵌套正如您所期望的那样 table tr td table tr td table tr td 可能
  • window.open 使用 css 样式

    我想设计我的 window open 目前 我的网页上有一些项目由于解析了某个类而打开 然后在新窗口中打开指定的文本 我想更改字体大小 字体和填充等 这是我的 JavaScript 代码
  • 角度 ng-repeat 根据条件添加样式

    我在 div 列表上使用 ng repeat 并且在渲染此 div 的 json 中手动添加项目 我需要定位我在 json 中添加的最后一个 div 它会自动在屏幕上渲染 即 couse 光标所在的位置 其余部分保持在相同位置 但没有给出渲
  • 背景大小:封面在视网膜显示屏上看起来像素化

    可以看到我正在开发的网站here http ourcityourstory com dev 如果你查看 iPad 3 或 iPhone 4 上的 关于 或 联系 部分 背景看起来全都是疯狂的像素化 我有background size set

随机推荐

  • go lang中按不同维度对点(结构)进行排序

    我有一个 Points 类型的多维点列表 我已经实施了sort Sort界面 现在可以排序y value e g type Points Point func points Points Len int return len points
  • 当视图不与模型交互时,这就是 MVC 吗?

    我设计了一个 MVC 在 NET 中 其中视图没有到模型的链接 它只知道控制器 传统的 MVC 模式的所有部分都相互通信 就我而言 控制器基本上是一个调解者 这会将任何异常或逻辑排除在视图之外 它对模型的依赖性为零 这不再是 MVC 了吗
  • 使用 Three.js 单击网格获取像素的颜色值

    我正在使用 Three js 的最新版本 我得到了一个带有 2D 网格和渐变颜色的场景 颜色取决于分配给每个顶点的值 我想通过用鼠标单击渐变的每个点来获取它的值 通过获取颜色 并对我的值进行一些数学计算 我尝试使用这样的系统 因为它在这里工
  • 使用toggleClass更改类后的jQuery事件

    我对 jQuery 和toggleClass 有疑问 我想创建一个 div 单击按钮即可关闭 按钮发生变化 当我再次单击此按钮时 div 将再次打开 问题是 当我单击按钮时 div 关闭并且按钮的类发生变化 这很好 但现在 当我单击新类的按
  • fread EOF 而不是分隔符

    我正在尝试用 fread 读取一个大文件 但我猜文件的布局有些混乱 如果我尝试读取文件 data fread input data txt sep t 在此文件上 我只是选择了有错误的行以及前后的一些内容 ID imdbID Title Y
  • 用 Python 封装旧版 Fortran。使用 setuptools 和 numpy.distutils 可以吗?

    我正在尝试为我的领域中一些流行的 Fortran 代码制作一个 python 包发行版 我希望它使用最标准的方法setup py文件 相关问题对学习有帮助如何包装 Fortran 扩展 https stackoverflow com que
  • 如何在新版Android Studio中添加classpath

    我将 android studio 版本更新为 bumblebee 版本 现在我想将导航组件添加到我的项目中 我想将类路径添加到 gradle 但是这个文件 gradle 已更改 我不知道如何添加它 我想添加这个 classpath and
  • 如何使用 Node.js 中的本机 Promise 全局处理异常?

    我知道怎么做处理承诺中的特定错误 https stackoverflow com questions 21800010 how do i handle errors with promises但有时我的代码片段看起来像这样 someProm
  • jquery ui - 模式对话框(创建模式内容的更好方法?)

    有没有办法在 JavaScript 中定义模式内容 而不是总是必须在页面上有一个元素并从中创建对话框 它有标题选项 因此我可以 动态 创建模态标题 但实际内容呢 就像说我需要它说 你要删除图像 539 而不是为每个可能的图像创建一个模式 或
  • NoSQL - MongoDB 与 CouchDB [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 对于 NoSQL 运动 我完全是个菜鸟 我听说过很多关于 MongoDB 和 CouchDB 的事情 我知道两者之间存在差异 作为进入 NoSQ
  • 在 cakephp 2.0 中运行插件的 shell

    我创建了一个新的 CakePHP 2 0 应用程序 并且想要运行插件的 shell
  • 抛出异常还是阻止异常?

    问题是是否更愿意Throw an exception或防止其发生 这是一个游戏项目 IndexOutOfBoundsException与围绕它进行编码相比 我有一个List
  • 动态数据源路由 - 数据源路由器未初始化

    我指的是这个article https spring io blog 2007 01 23 dynamic datasource routing 其中我们可以使用 Spring Framework 中的 AbstractRoutingDat
  • 如何使用 LWP 和正则表达式抓取 javascript 函数的日期参数?

    我在从特定网页抓取日期时遇到困难 因为该日期显然是传递给 JavaScript 函数的参数 我过去写过一些简单的抓取工具 没有任何重大问题 所以我没想到会出现问题 但我正在努力解决这个问题 该页面有 5 6 个日期 采用常规 yyyy mm
  • 为什么 getElementById 不适用于文档元素内的元素? [复制]

    这个问题在这里已经有答案了 如果你使用getElementById与文件类似 document getElementById那么它总是有效的 但是 如果我们对一个元素执行相同的操作x like x getElementById 然后它返回一
  • 如何在 primefaces 数据表中显示可变数量的列

    我有以下数组列表 class Report private String manufacturer private String color private List
  • 代码覆盖率结果窗口中的额外类

    在 Visual Studio 2010 中运行自动化测试后 代码覆盖率结果 选项卡显示一些我不明白的内容 接受测试的类之一称为 ApplicationData 它显示在代码覆盖率列表中 但它的变体也会出现 在本例中出现了三次 见下文 如果
  • 如何在 Javascript 中比较 C# Viewbag 中的值?

    我想比较一个布尔值Viewbag在 JavaScript 中 所以一开始我尝试了这个 if Viewbag MyBoolValue do sth 但后来我在控制台中出现错误 例如 Value False True is not declar
  • django:如何从包含外键的多个模型制作一种表单

    我正在尝试在一页上制作一个使用多个模型的表单 这些模型相互参考 我在验证表单时遇到问题 因为我不知道如何将表单中使用的两个模型的 id 获取到表单中以进行验证 我在模板中使用了隐藏键 但我不知道如何使其在视图中工作 我的代码如下 views
  • 如何使用笔记本jupyter在html中发布R代码

    我看到很多人谈论使用 jupyter 笔记本将代码转换和共享为 HTML 就像小菜一碟 但它对我来说变成了一场噩梦 我确实可以通过使用下拉菜单下载代码将其转换为 html 但它只能在我自己的计算机上访问 如果我将其作为链接发送给其他人 他们