繁体   English   中英

GeoPandas,MatPlotLib绘制自定义颜色

[英]GeoPandas, MatPlotLib Plot Custom Colors

鉴于此处提供的形状文件:我想用自定义颜色绘制下面指定的县集; Wayne和Washtenaw县的“蓝色”和其他县的“灰色”。

import geopandas as gpd
import matplotlib.pyplot as plt
%matplotlib inline

shpfile=<Path to unzipped .shp file referenced and linked above>
c=gpd.read_file(shpfile)
c=c.loc[c['GEOID'].isin(['26161','26093','26049','26091','26075','26125','26163','26099','26115','26065'])]
c.plot()

我更喜欢首先将颜色分配为数据框中的列,然后在以某种方式绘制时调用它们。 这可能吗?

UPDATE

我已经尝试传递一个列表并在循环中绘图,就像我用散点图一样,但它似乎没有相同的方式,因为它只是在一个图中绘制单独的县地图而不是所有这些。

这是我试过的:

color=['b','b','b','b','b','c','c','c','c','c']
for i in range(10):
    c.iloc[i:i+1].plot(c='white',linewidth=.5,color=color[i])

提前致谢!

Geopandas希望根据您的geopandas dataframe geopandas dataframe为地图geopandas 因此,您可以使用的最简单的着色方案是向数据框添加列'color' ,并根据您希望县的颜色填充一些值。

import numpy as np
import geopandas as gpd
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap

shpfile = 'cb_2015_us_county_20m.shp'
c = gpd.read_file(shpfile)
c = c.loc[c['GEOID'].isin(['26161','26093','26049','26091','26075',
                           '26125','26163','26099','26115','26065'])]

c['color'] = np.zeros(len(c))
# 23 is index for Washtenaw county and 1992 is index for Wayne county
c.ix[23, 'color'] = 1.0
c.ix[1992, 'color'] = 1.0

# create simple linear colormap that maps grey to blue
cmap = LinearSegmentedColormap.from_list(
    'mycmap', [(0, 'grey'), (1, 'blue')])

c.plot(column='color', cmap=cmap)

在此输入图像描述

也许这不是最优雅的解决方案,但这至少应该解释彩色地图在地缘广场中如何运作的概念,并为您提供您正在寻找的情节。 还检查了这个页面geopandas文档的地图着色多一点信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM