如何用 folium 绘制地图并在 python 中的地图旁边放置条形图?

Posted

技术标签:

【中文标题】如何用 folium 绘制地图并在 python 中的地图旁边放置条形图?【英文标题】:How can a plot a map with folium and place a bar graph next to the map in python? 【发布时间】:2020-07-18 19:32:07 【问题描述】:

我有一个数据框,我一直在创建一个带有小部件的交互式条形图,以显示数据框的不同特征,我只是想用数据框中的纬度和经度来显示位置,但我不知道如何显示这些两个带有单个可视化的我知道在单独的可视化中绘制带有纬度和经度的标记很热,但是我怎样才能将它们并排绘制呢?

【问题讨论】:

我相信你可以使用 subplot 并在小部件中有两个图。一个带有条形图,另一个带有标记。 感谢您的建议,我能够绘制图表和图表下方的地图,但不能并排绘制,因为通过使用子图正在创建另一个图,这让我认为我不能将地图视为子图,还有什么其他的想法可以让它并排? 【参考方案1】:

您需要将绘制的图形保存为图像,然后:

import os
from folium.plugins import FloatImage

img = ('your_path_to_image')

f_map = folium.Map ([# lat long from df])

image = (img, bottom = 40,left =65).add_to(f_map)

f_map.save()

【讨论】:

感谢您的建议,但是当我运行此代码时,它显示以下错误:image = (img, bottom = 40,left =65).add_to(plot_locations_map) ^ SyntaxError: invalid syntax 如果我取出底部和左侧部分,我会收到以下错误:---> 61 image = (img).add_to(f_map) 62 display(f_map) 63 AttributeError: 'str' object has no attribute 'add_to' 我在想也许我没有正确保存图像,我想在图像部分写什么= (“your_path_to_image”) ????【参考方案2】:

有点旧,但我们现在有一个解决方案,使用 ipywidgets

from io import BytesIO
import matplotlib.pyplot as plt
import folium
from IPython.display import display

fig, ax = plt.subplots(1)
# do your figure work here

mp = folium.Map()
# do your folium map work here

# save the image to a file handler in memory
tmpfile = BytesIO()
fig.savefig(tmpfile, format='png')

# close the figure to avoid this being re-rendered automatically by jupyter
plt.close()

# display the image and map converting them to widgets
display(widget.HBox([
     widget.Image(value=tmpfile.getvalue(), format='png', width='50%'), 
     widget.html(value=mp._repr_html_(), layout=widget.Layout(width='50%', height='97%', margin='3% 0 0 0'))
]))

【讨论】:

以上是关于如何用 folium 绘制地图并在 python 中的地图旁边放置条形图?的主要内容,如果未能解决你的问题,请参考以下文章

介绍如何用Python来绘制高清的交互式地图,建议收藏

介绍如何用 Python 来绘制高清的交互式地图,建议收藏

folium:绘制地图的模块

使用 Python 地图绘制工具 -- folium 全攻略

使用 Python 地图绘制工具 -- folium 全攻略

使用 Python 地图绘制工具 -- folium 全攻略