Мне очень нравится, как folium работает с python на ноутбуках jupyter (я не пробовал, но судя по учебникам). Я хочу достичь той же функциональности, но с записными книжками zeppelin, использующими spark.ipyspark. Функциональность Folium была бы огромным улучшением возможностей построения графиков данных в записных книжках zeppelin.
Я пробовал просто:
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 с блокнотом zeppelin, который неправильно вызывает карту. 2. Отображение локальной HTML-страницы как вывода абзаца zeppelin.
Кто-нибудь уже пробовал это? Кому-нибудь удалось это преодолеть?
Спасибо за совет. Мне удалось запустить его, добавив преобразование в строку html, а затем распечатать с помощью python.
Спасибо за совет, мне удалось запустить его, добавив:
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_()
, который соответствует этой ссылке (github.com/python-visualization/folium/issues/781), используемой в jupyter для отображения HTML в iframe.
Итак, код сейчас:
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)
Я не знаю фолиума, есть ли какой-нибудь api для html-строки карты фолиума? если да, вы можете использовать
print("%html " + htmlCode)