Python地图可视化-Folium实例(三)
这里回顾整理下folium的内容,算是一个总结,也记录下官方文档中的其他小栗字。
前两篇参考:
- 修改文本宽度
folium用起来,是有点儿像HTML标签一样,在前面的例子中,直接弹出文本的时候,文本是竖着的,像这样:
现在,来看看如何优化这个,比如,横着显示肯定会更好看嘛
看了看文档,
class
folium.map.Popup
(
html=None
,
parse_html=False
,
max_width='100%'
,
show=False
,
sticky=False
,
**kwargs
)
这个max_width用的上
## 初始化地图,指定上海市
m = folium.Map(
location=[31.2389, 121.4992],
zoom_start=14
# 悬浮弹出信息
tooltip = parse_zhch('嘿!')
# 添加marker到地图
folium.Marker([31.2453,121.4857], popup=folium.Popup(html=parse_zhch('外白渡桥')), tooltip=tooltip).add_to(m)
folium.Marker([31.2418,121.4953], popup=folium.Popup(html=parse_zhch('东方明珠'),max_width=10), tooltip=tooltip).add_to(m)
m
指定了宽度,文本就横着显示了
2. 使用HTML标签显示表格
前面有例子调用其他的数据可视化图表,像altar,其实,直接写HTML标签也是可以的,比如
my_table='''
<table border="1">
<td>row 1, cell 1</td>
<td>row 1, cell 2</td>
<td>row 2, cell 1</td>
<td>row 2, cell 2</td>
</table>
然后直接传入popup就行了
## 初始化地图,指定上海市
m = folium.Map(
location=[31.2389, 121.4992],
zoom_start=14
# 悬浮弹出信息
tooltip = parse_zhch('嘿!')
# 添加marker到地图
folium.Marker([31.2453,121.4857], popup=folium.Popup(html=my_table,max_width=100), tooltip=tooltip).add_to(m)
folium.Marker([31.2418,121.4953], popup=folium.Popup(html=parse_zhch('东方明珠'),max_width=10), tooltip=tooltip).add_to(m)
m
3.标记-点、线、面
folium可以绘制很多种标记,点、线、面,可以多看看文档
## 初始化地图,指定上海市
m = folium.Map(
location=[31.2389, 121.4992],
zoom_start=15
#1. 添加标记点
folium.Marker(
location=[31.2453,121.4857],
popup=folium.Popup(html=parse_zhch('外白渡桥'),max_width=100)
).add_to(m)
#2.添加标记线
folium.PolyLine(
locations=[
[31.24464,121.48348],
[31.24318,121.48262],
[31.23969,121.48433],
[31.24014,121.49171]
popup=parse_zhch('路径测试'),
color='red'
).add_to(m)
#3.添加标记多边形
folium.Polygon(
locations=[
[31.2491,121.4908],
[31.2395,121.4798],
[31.2356,121.4958],
[31.2444,121.4984]
popup=parse_zhch('多边形测试'),
color='green',
fill=True,
weight=2
).add_to(m)
m
4.保存HTML
将做好的可视化图表保存为HTML
m.save('demo_folium.html')
然后直接使用浏览器打开即可
5.关于图层
folium中可以管理一组标记,比如FeatureGroup,就可以控制一组标记的显示与否了
## 初始化地图,指定上海市
m = folium.Map(
location=[31.2389, 121.4992],
zoom_start=15
groups = folium.FeatureGroup('momomomo')
locations=[
[31.24436,121.48080],
[31.24415,121.48208],
[31.24218,121.48171],
[31.24273,121.47967],
[31.24197,121.48177],
[31.24386,121.48220],
[31.24138,121.48174]
for l in locations:
groups.add_child(
folium.CircleMarker(
location=l,
radius=7,
color='yellow',
fill=True,
fill_color='red',
fill_opacity=0.4