Folium 地图未显示
Folium map not displaying
运行 在 canopy 版本 1.5.5.3123 上
随着;
Folium 版本:0.1.2,内部版本:1
以下代码;
import folium
import pandas as pd
LDN_COORDINATES = (51.5074, 0.1278)
from IPython.display import HTML
import shapefile
#create empty map zoomed in on London
LDN_COORDINATES = (51.5074, 0.1278)
map = folium.Map(location=LDN_COORDINATES, zoom_start=12)
display(map)
Returns
<folium.folium.Map at 0x10c01ae10>
但没有别的。
如何在 ipython 笔记本中显示地图?
您使用过时版本的 Folium 是否有原因?
此 ipython notebook 澄清了 1.2 和 2 之间的一些区别,并解释了如何将 folium 地图放入 iframe 中。
http://nbviewer.jupyter.org/github/bibmartin/folium/blob/issue288/examples/Popups.ipynb
代码看起来像这样(在上面的笔记本中找到,它添加了一个标记,但可以直接将其删除):
m = folium.Map([43,-100], zoom_start=4)
html="""
<h1> This is a big popup</h1><br>
With a few lines of code...
<p>
<code>
from numpy import *<br>
exp(-2*pi)
</code>
</p>
"""
iframe = folium.element.IFrame(html=html, width=500, height=300)
popup = folium.Popup(iframe, max_width=2650)
folium.Marker([30,-100], popup=popup).add_to(m)
m
文档已经完成,运行,http://folium.readthedocs.io/en/latest/
我发现 this tutorial on Folium in iPython Notebooks 很有帮助。您创建的原始 Folium 实例不足以让 iPython 显示地图 - 您需要做更多的工作才能获得 iPython 可以呈现的一些 HTML。
要在 iPython 笔记本中显示,您需要使用 myMap._build_map() 方法生成 html,然后将其包装在具有 [=27 样式的 iFrame 中=].
import folium
from IPython.display import HTML, display
LDN_COORDINATES = (51.5074, 0.1278)
myMap = folium.Map(location=LDN_COORDINATES, zoom_start=12)
myMap._build_map()
mapWidth, mapHeight = (400,500) # width and height of the displayed iFrame, in pixels
srcdoc = myMap.HTML.replace('"', '"')
embed = HTML('<iframe srcdoc="{}" '
'style="width: {}px; height: {}px; display:block; width: 50%; margin: 0 auto; '
'border: none"></iframe>'.format(srcdoc, width, height))
embed
通过返回 embed
作为 iPython 单元格的输出,iPython 将自动在返回的 iFrame 上调用 display.display()
。在这种情况下,如果您之后要渲染其他内容或在循环或函数中使用它,则只需要调用 display()
。
此外,请注意,使用 map
作为变量名可能会与多个 类.
的 .map() 方法混淆
考虑到以上答案,另一种简单的方法是将其与 Jupiter Notebook 一起使用。
例如(在 Jupiter 笔记本上):
import folium
london_location = [51.507351, -0.127758]
m = folium.Map(location=london_location, zoom_start=15)
m
并在调用 'm' 时查看结果。
_build_map() 不再存在。以下代码对我有用
import folium
from IPython.display import display
LDN_COORDINATES = (51.5074, 0.1278)
myMap = folium.Map(location=LDN_COORDINATES, zoom_start=12)
display(myMap)
我有同样的错误,但对我没有任何帮助
我终于找到了
打印(目录(folium.Map))
请参阅保存方法不存在,而是使用
您也可以将地图另存为html,然后用浏览器打开。
import folium
import webbrowser
class Map:
def __init__(self, center, zoom_start):
self.center = center
self.zoom_start = zoom_start
def showMap(self):
#Create the map
my_map = folium.Map(location = self.center, zoom_start = self.zoom_start)
#Display the map
my_map.save("map.html")
webbrowser.open("map.html")
#Define coordinates of where we want to center our map
coords = [51.5074, 0.1278]
map = Map(center = coords, zoom_start = 13)
map.showMap()
2022 年无需使用 iframe。要显示地图,只需使用
{{ map | safe }}
标记在 html 和 _repr_html_()
方法中。也不需要将地图保存到模板
sample.py
@app.route('/')
def index():
start_coords = (46.9540700, 142.7360300)
folium_map = folium.Map(location=start_coords, zoom_start=14)
return folium_map._repr_html_()
template.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{{ folium_map | safe }}
</body>
</html>
运行 在 canopy 版本 1.5.5.3123 上 随着;
Folium 版本:0.1.2,内部版本:1
以下代码;
import folium
import pandas as pd
LDN_COORDINATES = (51.5074, 0.1278)
from IPython.display import HTML
import shapefile
#create empty map zoomed in on London
LDN_COORDINATES = (51.5074, 0.1278)
map = folium.Map(location=LDN_COORDINATES, zoom_start=12)
display(map)
Returns
<folium.folium.Map at 0x10c01ae10>
但没有别的。
如何在 ipython 笔记本中显示地图?
您使用过时版本的 Folium 是否有原因?
此 ipython notebook 澄清了 1.2 和 2 之间的一些区别,并解释了如何将 folium 地图放入 iframe 中。 http://nbviewer.jupyter.org/github/bibmartin/folium/blob/issue288/examples/Popups.ipynb
代码看起来像这样(在上面的笔记本中找到,它添加了一个标记,但可以直接将其删除):
m = folium.Map([43,-100], zoom_start=4)
html="""
<h1> This is a big popup</h1><br>
With a few lines of code...
<p>
<code>
from numpy import *<br>
exp(-2*pi)
</code>
</p>
"""
iframe = folium.element.IFrame(html=html, width=500, height=300)
popup = folium.Popup(iframe, max_width=2650)
folium.Marker([30,-100], popup=popup).add_to(m)
m
文档已经完成,运行,http://folium.readthedocs.io/en/latest/
我发现 this tutorial on Folium in iPython Notebooks 很有帮助。您创建的原始 Folium 实例不足以让 iPython 显示地图 - 您需要做更多的工作才能获得 iPython 可以呈现的一些 HTML。
要在 iPython 笔记本中显示,您需要使用 myMap._build_map() 方法生成 html,然后将其包装在具有 [=27 样式的 iFrame 中=].
import folium
from IPython.display import HTML, display
LDN_COORDINATES = (51.5074, 0.1278)
myMap = folium.Map(location=LDN_COORDINATES, zoom_start=12)
myMap._build_map()
mapWidth, mapHeight = (400,500) # width and height of the displayed iFrame, in pixels
srcdoc = myMap.HTML.replace('"', '"')
embed = HTML('<iframe srcdoc="{}" '
'style="width: {}px; height: {}px; display:block; width: 50%; margin: 0 auto; '
'border: none"></iframe>'.format(srcdoc, width, height))
embed
通过返回 embed
作为 iPython 单元格的输出,iPython 将自动在返回的 iFrame 上调用 display.display()
。在这种情况下,如果您之后要渲染其他内容或在循环或函数中使用它,则只需要调用 display()
。
此外,请注意,使用 map
作为变量名可能会与多个 类.
考虑到以上答案,另一种简单的方法是将其与 Jupiter Notebook 一起使用。
例如(在 Jupiter 笔记本上):
import folium
london_location = [51.507351, -0.127758]
m = folium.Map(location=london_location, zoom_start=15)
m
并在调用 'm' 时查看结果。
_build_map() 不再存在。以下代码对我有用
import folium
from IPython.display import display
LDN_COORDINATES = (51.5074, 0.1278)
myMap = folium.Map(location=LDN_COORDINATES, zoom_start=12)
display(myMap)
我有同样的错误,但对我没有任何帮助 我终于找到了 打印(目录(folium.Map)) 请参阅保存方法不存在,而是使用
您也可以将地图另存为html,然后用浏览器打开。
import folium
import webbrowser
class Map:
def __init__(self, center, zoom_start):
self.center = center
self.zoom_start = zoom_start
def showMap(self):
#Create the map
my_map = folium.Map(location = self.center, zoom_start = self.zoom_start)
#Display the map
my_map.save("map.html")
webbrowser.open("map.html")
#Define coordinates of where we want to center our map
coords = [51.5074, 0.1278]
map = Map(center = coords, zoom_start = 13)
map.showMap()
2022 年无需使用 iframe。要显示地图,只需使用
{{ map | safe }}
标记在 html 和 _repr_html_()
方法中。也不需要将地图保存到模板
sample.py
@app.route('/')
def index():
start_coords = (46.9540700, 142.7360300)
folium_map = folium.Map(location=start_coords, zoom_start=14)
return folium_map._repr_html_()
template.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{{ folium_map | safe }}
</body>
</html>