我正在尝试创建一个地图,其中的点按类别进行颜色编码-但是,当我按类别进行颜色编码时,索引将包含在类别中,因此每个点都是自己的颜色。下面是一些示例代码来重现我的问题。你知道吗
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from matplotlib import cm
import geopandas as gpd
from shapely.geometry import Point
import contextily as ctx
list = [[39.17413494, -84.36475604, 'BK'],
[38.96151336, -84.55732482, 'McDonalds'],
[38.95100498, -84.55013050000001, 'McDonalds'],
[38.96186501, -84.55717946, 'McDonalds'],
[39.00969774, -84.50139703, 'Subway'],
[39.09614656, -84.56445953, 'Pizza Hut'],
[38.98661028, -84.39965444, 'Popeyes'],
[39.34727542, -84.66033389, 'Arbys'],
[39.09854089, -84.55881323, 'Wendys'],
[39.0985409, -84.55881323, 'Subway'],
[38.98693673, -84.39936496, 'Starbucks'],
[39.17663372, -84.66664250000001, 'ChickFilA'],
[39.19368097, -84.67709306, 'Subway'],
[39.202496000000004, -84.5474509, 'Starbucks'],
[39.202496000000004, -84.5474509, 'Starbucks'],
[39.05680444, -84.32690772, 'BK'],
[39.049786100000006, -84.39536650000001, 'McDonalds'],
[39.049786100000006, -84.39536650000001, 'McDonalds'],
[39.049786100000006, -84.39536650000001, 'McDonalds'],
[39.049786100000006, -84.39536650000001, 'Subway'],
[39.049786100000006, -84.39536650000001, 'Pizza Hut'],
[39.04982251, -84.39533805, 'Popeyes'],
[39.04982249, -84.39533811, 'Arbys'],
[39.04982581, -84.39533835, 'Wendys'],
[39.04982419, -84.39533558, 'Subway'],
[39.04982533, -84.39534599, 'Starbucks'],
[39.04982604, -84.39534769, 'ChickFilA'],
[39.356410100000005, -84.361086, 'Subway'],
[39.18283407, -84.38227921, 'Starbucks'],
[39.43731072, -84.26926351, 'Starbucks']]
data = pd.DataFrame(list, columns =['Lat', 'Long', 'Type'])
geometry = [Point(xy) for xy in zip(data['Long'], data['Lat'])]
crs = {'init':'epsg:4326'}
gdf = gpd.GeoDataFrame(data, crs=crs, geometry=geometry)
cmap = plt.cm.get_cmap('Dark2', 9)
gdf = gdf.to_crs(epsg=3857)
ax = gdf.plot(c=gdf.Type, cmap=cmap, label=gdf.Type, figsize=(10,10), alpha=.5)
ctx.add_basemap(ax, url=ctx.providers.Stamen.TonerLite)
ax.set_axis_off()
ax.legend(loc='center left', bbox_to_anchor=(1, 0.5))
其结果如下所示:
正如您所看到的,每个“麦当劳”都有自己的颜色,图例列出了每个数据点。你知道吗
您使用的绘图属性不正确。Geopandas(至少在最近的版本中)需要
column
而不是c
。你知道吗这似乎管用。但是你应该意识到你有多个重叠点,所以看起来并不总是一样的。你知道吗
编辑:要获得正确的图例,您需要使用Geopandas绘制图例,并将图例传递给Geopandas
plot
:相关问题 更多 >
编程相关推荐