【问题标题】:Converting Jupyter Notebook "%" commands to normal python [duplicate]将 Jupyter Notebook“%”命令转换为普通 python [重复]
【发布时间】:2018-06-05 04:33:48
【问题描述】:

我目前正在关注Holoviews tutorial。里面的所有内容都在笔记本中完成,并使用了 '%' 语法。我从来没有用过笔记本(也不是特别想用)。如何将这些行写在普通的 .py 文件中?这是一个例子:

 %opts Graph [width=400 height=400]

我尝试了一些方法,例如:

graph=hv.Graph.opts(width=400, height=400)
graph=hv.Graph.opts(width=[400], height=[400])
hv.Graph(width=400, height=400)

这些都会抛出错误。 % 语法实际上是如何工作的?该列表中怎么没有逗号?我只想正常设置图表的宽度和高度。谢谢!

【问题讨论】:

  • 您是在询问这种特殊的 iPython 魔术方法还是一般情况?因为通常,您必须以不同的方式重新创建功能。为方便起见,他们抽象出各种代码。
  • 嗯。好吧,这是我目前关心的问题,但本教程中有一些示例。有没有通用的策略?以下是一些其他示例:
  • %%output size=150 %%opts Curve [height=100 width=600 xaxis=None tools=['hover']] %%opts Curve (color='red' line_width=1.5) %%opts 尖峰 [height=100 width=600 yaxis=None] (color='grey' line_width=0.25)
  • 恐怕我对%opts 不熟悉,所以我不确定我是否可以帮助解决这个问题。对于一般策略,您必须四处搜索以了解他们实际做了什么。例如%timeit 可以替换为timeit 模块,但使用它更复杂。
  • 我不认为 opts 实际上是一种“构建它”的特殊方法。从快速搜索来看,它看起来像是在抓取参数并将它们传递给某物。 opts是holoviews库中Graph的一种方法

标签: python ipython


【解决方案1】:

Tl;dr:如果您真正感兴趣的是在 jupyter notebook 环境之外使用holoviews(就像 OP 一样),请参阅 holoviews 文档中的Outside the notebook 部分。简单地说,魔术%%opts Graph [width=400 height=400]对应于在一些Graph对象g上调用方法g.options(width=400, height=400)

如果您阅读本文是因为您对jupyter 的%“魔法”感到好奇,请继续阅读。

您可以在笔记本中使用的“%”命令是所谓的 ipython“魔法”。您将找到标准列表here。因此它们在普通 Python 中不可用,但 ipython 理解 % 语法并将其转换为对特定库的调用。因此,访问它们并使用相同的 % 引导语法的最简单方法是运行 ipython 而不是 python

您还询问 % 语法是如何工作的。第三方包可以通过使用简单的装饰器将其某些功能“注册”为自定义 ipython 魔法:

@line_magic
def lmagic(self, line):
    "my line magic"
    print("Full access to the main IPython object:", self.shell)
    print("Variables in the user namespace:", list(self.shell.user_ns.keys()))
    return line

defining custom magics 的文档中查看更多信息。

最后,您当然对从hv 魔法转换为相应的 Python 代码更感兴趣。似乎一直困扰你的%%opts 魔法是这个类的一个方法:holoviews.ipython.magics.OptsMagic。我不使用全息视图,但似乎这样的东西可能相当于你问题中的魔法:

from holoviews.ipython.magics import OptsMagic
om = OptsMagic()
om.opts("Graph [width=400 height=400]") 

请注意,您可能还需要选择图形后端,例如使用 backend 关键字选项。

【讨论】:

    猜你喜欢
    • 2013-06-09
    • 2019-11-23
    • 2020-08-31
    • 2019-11-24
    • 2019-12-13
    • 2018-05-13
    • 1970-01-01
    • 2018-04-25
    • 1970-01-01
    相关资源
    最近更新 更多