我非常喜欢folium在jupyter笔记本上与python一起工作的方式(我没有尝试过,但是从教程中判断)。我要实现的功能是相同的,但对于使用spark.ipyspark的齐柏林飞艇笔记本电脑而言。 Folium功能将极大地改善齐柏林飞艇笔记本的数据绘图功能。
我尝试过的很简单:
import folium
m = folium.Map(location=[45.5236, -122.6750])
m
这仅返回<folium.folium.Map at 0x10f4a3518>
我接下来尝试的是构建HTML映射,将其保存在本地,然后将其调用为Zeppelin段落的输出。
import folium
from IPython.display import HTML
from IPython.display import IFrame
m =folium.Map(
location=[45.5236, -122.6750],
tiles='Stamen Toner',
zoom_start=13
)
m.render_iframe = True
m.save('/Users/abc/m.html')
HTML("<iframe src=file:///Users/abc/m.html width=700 height=350></iframe>")
谁又给了我
<IPython.core.display.HTML object>
然后我与交换了最后一行:
IFrame("src=file:///Users/abc/m.html", width=700, height=350)
再次:
<IPython.lib.display.IFrame at 0x112882c88>
当我尝试使用以下命令打印python时:
print("%html <iframe src=file:///Users/abc/m.html width=700, height=350></iframe>")
我得到700x350空白的白色窗口作为该段的输出。当我尝试将src更改为“ https://zeppelin.apache.org/”时,效果很好。
我觉得有两件事不能正常工作。 1.带齐柏林飞艇笔记本电脑的Folium模块未正确调用地图。 2.显示本地HTML页面作为齐柏林飞艇段落的输出。
有人尝试过吗?有人成功克服了这个问题吗?
答案 0 :(得分:2)
感谢您的建议,我可以通过添加以下内容来运行它:
html_string = m.get_root().render()
print("%html", html_string)
所以现在整个代码如下:
import folium
m =folium.Map(
location=[45.5236, -122.6750],
tiles='Stamen Toner',
zoom_start=13,
width=600,height=300
)
html_string = m.get_root().render()
print("%html", html_string)
编辑:
使用上述方法修改了整个齐柏林飞艇笔记本的外观。我使用了不同的方法,使用html_string = m._repr_html_()
,根据jupyter中用于在iframe中显示HTML的此链接(github.com/python-visualization/folium/issues/781)。
现在编码:
import folium
m =folium.Map(
location=[45.5236, -122.6750],
tiles='Stamen Toner',
zoom_start=13,
width=600,height=300
)
html_string = m._repr_html_()
print("%html", html_string)