首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >地理地形图不会绘制地质体

地理地形图不会绘制地质体
EN

Stack Overflow用户
提问于 2018-12-10 14:09:29
回答 1查看 2.6K关注 0票数 4

我使用geopandas和每个县在上次选举中的得票率与威斯康星州的县一起导入了一个shapefile。我现在正试图把威斯康辛州划分成社区,使用沃罗诺伊的选区划分每个县的投票权。我想使用geoplot.voronoi来做这件事,但是当我对shapefile数据调用geoplot.voronoi时,geoplot无法绘制我的地图并崩溃。

下面的代码成功地生成了投票共享的映射

代码语言:javascript
复制
import pandas as pd
import matplotlib.pyplot as plt
import geopandas as gp

wi = gp.GeoDataFrame.from_file('./data/shape/Wards_111312.shp')
elec_dat = pd.read_csv('./data/wi_2014_heda.csv')

wi['vrat'] = elec_dat['g2014_SOS_rv']
wi['vdat'] = elec_dat['g2014_SOS_dv']
wi['mr'] = (wi['vdat'] - wi['vrat']) / ((wi['vdat'] + wi['vrat']))
wi['mr'] = wi['mr'].fillna(0)

wi.plot(column = 'mr', cmap='OrRd')

但是,当我试图用geoplot绘制同样的东西时,我会得到一个空白图像(下面的明显空格是图像)。

代码语言:javascript
复制
import geoplot
geoplot.polyplot(wi)

此外,如果我试图绘制Voronoi镶嵌图:

代码语言:javascript
复制
ax = geoplot.voronoi(
    wi.sample(1000),
    hue='mr', cmap='Reds', scheme='fisher_jenks',
    clip=wi.geometry,
    linewidth=0)
geoplot.polyplot(wi, ax=ax)

我得到以下错误:

代码语言:javascript
复制
/home/rtse/anaconda3/envs/gerry/lib/python3.6/site-packages/pysal/__init__.py:65: VisibleDeprecationWarning: PySAL's API will be changed on 2018-12-31. The last release made with this API is version 1.14.4. A preview of the next API version is provided in the `pysal` 2.0 prelease candidate. The API changes and a guide on how to change imports is provided at https://pysal.org/about
  ), VisibleDeprecationWarning)

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-2-5ed5e333efcd> in <module>
      7     hue='mr', cmap='Reds', scheme='fisher_jenks',
      8     clip=wi.geometry,
----> 9     linewidth=0)
     10 geoplot.polyplot(wi, ax=ax)
     11 

~/anaconda3/envs/gerry/lib/python3.6/site-packages/geoplot/geoplot.py in voronoi(df, projection, edgecolor, clip, hue, scheme, k, cmap, categorical, vmin, vmax, legend, legend_kwargs, legend_labels, extent, figsize, ax, **kwargs)
   2126 
   2127     # Finally we draw the features.
-> 2128     geoms = _build_voronoi_polygons(df)
   2129     if projection:
   2130         for color, geom in zip(colors, geoms):

~/anaconda3/envs/gerry/lib/python3.6/site-packages/geoplot/geoplot.py in _build_voronoi_polygons(df)
   2628     """
   2629     from scipy.spatial import Voronoi
-> 2630     geom = np.array(df.geometry.map(lambda p: [p.x, p.y]).tolist())
   2631     vor = Voronoi(geom)
   2632 

~/anaconda3/envs/gerry/lib/python3.6/site-packages/pandas/core/series.py in map(self, arg, na_action)
   2996         """
   2997         new_values = super(Series, self)._map_values(
-> 2998             arg, na_action=na_action)
   2999         return self._constructor(new_values,
   3000                                  index=self.index).__finalize__(self)

~/anaconda3/envs/gerry/lib/python3.6/site-packages/pandas/core/base.py in _map_values(self, mapper, na_action)
   1002 
   1003         # mapper is a function
-> 1004         new_values = map_f(values, mapper)
   1005 
   1006         return new_values

pandas/_libs/src/inference.pyx in pandas._libs.lib.map_infer()

~/anaconda3/envs/gerry/lib/python3.6/site-packages/geoplot/geoplot.py in <lambda>(p)
   2628     """
   2629     from scipy.spatial import Voronoi
-> 2630     geom = np.array(df.geometry.map(lambda p: [p.x, p.y]).tolist())
   2631     vor = Voronoi(geom)
   2632 

AttributeError: 'MultiPolygon' object has no attribute 'x'

我是否遗漏了在geoplot中绘制几何图形所需的步骤?我跟踪此示例代码,但是他们从geopandas.datasets加载数据,而不是提供自己的shapefiles。我做错了什么?

提前感谢您的帮助!

EN

回答 1

Stack Overflow用户

发布于 2019-07-25 23:25:05

我只是有一个类似的问题,发现我的问题是,我的LAT和LON值向后。shapely.Point tuples需要是(LON,LAT)。

另一个可能出现空白的原因是,这幅图根本不是空白的,它只是一张非常大区域的地图。我认为这对您的绘图是不太可能的,但是您可以通过向extent ()中的gplt.polyplot()变量传递一个带有min、max、LON和LAT值的元组来检查这一点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53707430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档