推荐一个超好用的python包folium, 专门用于地理数据可视化,官方英文教程教程点击这里,查看本文源代码请点击这里。 />

使用方法很简单,操作如下:导入包,创建一副世界地图

import folium

import pandas as pd

# define the world map

world_map = folium.Map()

# display world map

world_map />

2. 输入经纬度,尺度,在这里我们以旧金山(37.7749° N, 122.4194° W)为例。

# San Francisco latitude and longitude values

latitude = 37.77

longitude = -122.42

# Create map and display it

san_map = folium.Map(location=[latitude, longitude], zoom_start=12)

# Display the map of San Francisco

san_map />

更改地图显示,默认为'OpenStreetMap'风格,我们还可以选择'Stamen Terrain', 'Stamen Toner'等。

# Create map and display it

san_map = folium.Map(location=[latitude, longitude], zoom_start=12,tiles='Stamen Toner') />

3. 读取数据集(旧金山犯罪数据集)

# Read Dataset

cdata = pd.read_csv('https://cocl.us/sanfran_crime_dataset')

cdata.head() />

4. 在地图上显示前200条犯罪数据

# get the first 200 crimes in the cdata

limit = 200

data = cdata.iloc[0:limit, :]

# Instantiate a feature group for the incidents in the dataframe

incidents = folium.map.FeatureGroup()

# Loop through the 200 crimes and add each to the incidents feature group

for lat, lng, in zip(cdata.Y, data.X):

incidents.add_child(

folium.CircleMarker(

[lat, lng],

radius=7, # define how big you want the circle markers to be

color='yellow',

fill=True,

fill_color='red',

fill_opacity=0.4

)

)

# Add incidents to map

san_map = folium.Map(location=[latitude, longitude], zoom_start=12)

san_map.add_child(incidents) />

5. 添加地理标签

# add pop-up text to each marker on the map

latitudes = list(data.Y)

longitudes = list(data.X)

labels = list(data.Category)

for lat, lng, label in zip(latitudes, longitudes, labels):

folium.Marker([lat, lng], popup=label).add_to(san_map)

# add incidents to map

san_map.add_child(incidents) />

6. 统计区域犯罪总数

from folium import plugins

# let's start again with a clean copy of the map of San Francisco

san_map = folium.Map(location = [latitude, longitude], zoom_start = 12)

# instantiate a mark cluster object for the incidents in the dataframe

incidents = plugins.MarkerCluster().add_to(san_map)

# loop through the dataframe and add each data point to the mark cluster

for lat, lng, label, in zip(data.Y, data.X, cdata.Category):

folium.Marker(

location=[lat, lng],

icon=None,

popup=label,

).add_to(incidents)

# add incidents to map

san_map.add_child(incidents) />

7. 读取geojson文件,可视化旧金山市10个不同Neighborhood的边界

import json

import requests

url = 'https://cocl.us/sanfran_geojson'

san_geo = f'{url}'

san_map = folium.Map(location=[37.77, -122.4], zoom_start=12)

folium.GeoJson(

san_geo,

style_function=lambda feature: {

'fillColor': '#ffff00',

'color': 'black',

'weight': 2,

'dashArray': '5, 5'

}

).add_to(san_map)

#display map

san_map />

8. 统计每个区域的犯罪事件数目

# Count crime numbers in each neighborhood

disdata = pd.DataFrame(cdata['PdDistrict'].value_counts())

disdata.reset_index(inplace=True)

disdata.rename(columns={'index':'Neighborhood','PdDistrict':'Count'},inplace=True)

disdata />

9. 创建Choropleth Map (颜色深浅代表各区犯罪事件数目)

m = folium.Map(location=[37.77, -122.4], zoom_start=12)

folium.Choropleth(

geo_data=san_geo,

data=disdata,

columns=['Neighborhood','Count'],

key_on='feature.properties.DISTRICT',

#fill_color='red',

fill_color='YlOrRd',

fill_opacity=0.7,

line_opacity=0.2,

highlight=True,

legend_name='Crime Counts in San Francisco'

).add_to(m)

m />

10. 创建热力图

from folium.plugins import HeatMap

# let's start again with a clean copy of the map of San Francisco

san_map = folium.Map(location = [latitude, longitude], zoom_start = 12)

# Convert data format

heatdata = data[['Y','X']].values.tolist()

# add incidents to map

HeatMap(heatdata).add_to(san_map)

san_map />

本文源代码Jupyter notebook地址:Jupyter Notebook Viewer​nbviewer.jupyter.org

GitHub下载地址:gaonanlee/Visualization-Practice​github.com

最后,folium还可以用来创建动态热力图,动态路径图等,具体可参考Medium上的这篇文章。

实现效果如下图所示 (直接从Medium上抱过来的图,详细代码请点击上述链接)。 />

我的其他回答

欢迎大家关注我的机器学习笔记专栏,我将用小白也能听懂的语言,为大家讲述机器学习中那些有趣好玩的知识 (●'◡'●)

python画简便的图-python如何画出漂亮的地图?相关推荐

  1. python画简便的图-python如何画出漂亮的地图?网友:教教我呗

    导入包,创建一副世界地图 不要错过 免费学习Python的机会,快来+688244617 import folium import pandas as pd # define the world ma ...

  2. python画简便的图-python中简单易学的绘图:用turtle画太极图

    为什么想画太极图呢?因为我儿子不知道是看了哪本书还是哪个电视,竟然特地打印出一张太极图要挂在大门口,我赶紧说祖宗这挂在门外,别人看见了还以为咱家出什么事了,你喜欢就挂自己卧室门口吧,于是这张图就成了他 ...

  3. python画简便的图-python的pyecharts绘制各种图表详细(附代码)

    环境:pyecharts库,echarts-countries-pypkg,echarts-china-provinces-pypkg,echarts-china-cities-pypkg 数据:20 ...

  4. python画简便的图-python 实现在一张图中绘制一个小的子图方法

    有时候为了直观展现图的信息,可以在大图中添加小子图的方式进行数据分析,如下图所示: 具体的代码如下:该图连接了数据库,当然重要的不是数据展示,而是添加子图的方法. import matplotlib. ...

  5. python能画k线图吗_python画k线图(一天的k线图怎么画)

    1.大智慧软件在日线窗口的左上角标有主图的公式名称,(如ma sar bbi )等, 如果不是ma指标,请输入ma,回车.2.如果输入ma后还是没有均线,请按 f7 键,弹出 最好能举个例子的.非常感 ...

  6. 用python绘制漂亮的图形-python如何画出漂亮的地图?

    Python地图可视化库有大家熟知的pyecharts.plotly.folium,其他回答都有介绍,还有稍低调的bokeh.basemap.geopandas,也是地图可视化的利器. 首先介绍下bo ...

  7. python画地图柱状图_Python 如何画出漂亮的地图?

    Python地图可视化库有大家熟知的pyecharts.plotly.folium,其他回答都有介绍,还有稍低调的bokeh.basemap.geopandas,也是地图可视化的利器. 首先介绍下bo ...

  8. python画指北针_python如何画出漂亮的地图?

    python如何画出漂亮的地图? 要画一张好看的地图,数据量的多少.底图的支持程度与选择乃至个人的美学素养是一张好看的地图重要的因素.目前python也有很多能够实现地图可视化的包,这里给大家推荐最基 ...

  9. python画简便的图-最适合小白学的花色玩Python折线图|画个天气预报

    原标题:最适合小白学的花色玩Python折线图|画个天气预报 欢迎关注天善智能 hellobi.com,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习.问答.求职,一站式搞定! 对商业 ...

最新文章

  1. Android APP全面屏适配技术要点
  2. MySQL数据库-笔记06【SQL的4种连接查询、事务】
  3. 操作技巧——查看端口是否被占用
  4. Weex 解决Print: Entry, :CFBundleIdentifier, Does Not Exist 错误方法
  5. 程序员的年龄越大编程能力越弱???原来我们都理解错了
  6. 基友扫雷通关跟我炫耀!于是用Python自动扫雷程序十秒通关
  7. 彪马PUMA源代码被盗,称客户数据不受影响
  8. sql文件加载出错_四十二、SparkSQL通用数据源加载(load)和保存(save)
  9. 插入u盘被计算机限制怎么回事,电脑不读u盘怎么处理,显示本次操作由于计算机的限制而被取消 请您与系统管理员联系,怎门回事?...
  10. 阶段3 2.Spring_09.JdbcTemplate的基本使用_2 JdbcTemplate的概述和入门
  11. Twine:Facebook 集群调度管理系统
  12. NOIP2016排名(1~745)
  13. 生成模型与判别模型的区别与联系
  14. 思维题:三个箱子,一个只装苹果,一个只装橙,另一个装苹果和橙,请问?
  15. 阿里 P6 到底应该具备哪些核心能力?
  16. html包zip有错误是什么意思,解压缩文件出现错误是什么回事
  17. FPGA配合debussy、modelsim仿真环境搭建
  18. 蜻蜓FM语音下载(qingtingdown)
  19. 金融情感分析,股市预测(二)
  20. 泰坦服务器装系统,深海泰坦X8Ti笔记本安装win10系统操作方法

热门文章

  1. mysql 5.6 升级问题_mysql5.6升级5.7带来的问题
  2. discard python_Python学习第三天
  3. C++ MathGL 二维数据绘图
  4. Celery:routing
  5. [cloud][sdn] neutron了解
  6. 使用GDB调试产生多进程的程序
  7. 写作是最好的学习方法
  8. MfC基础--绘图基础--win32
  9. linux shell 之 grep
  10. CCF201809-3 元素选择器(100分)【文本处理】