我正试图在华盛顿州金郡的图形上绘制一组点。
我可以用下面的代码显示图形:
fig, ax = plt.subplots(figsize = (15,15))
kings_county.plot(ax=ax)
这给了我图形。然后我从我加载的csv的lat/long中读取点。
df = pd.read_csv('kc_house_data_train.csv')
crs = {'init': 'epsg:4326'}
这会把所有的点放到一个新的 Dataframe 中
geometry = [Point(x,y) for x,y in zip(df.lat,df.long)]
geo_df = gpd.GeoDataFrame(df, # specifify your dataframe
crs = crs, # this is your coordinate system
geometry = geometry) # specify the geometry list we created
但是当我这么做的时候
fig, ax = plt.subplots(figsize = (40,40))
kings_county.plot(ax=ax, alpha = 0.4, color = 'grey', aspect = 'auto')
geo_df[geo_df.price >= 750000].plot(ax = ax , markersize = 20, color = 'blue',marker = 'o',label = 'pricey')
geo_df[geo_df.price < 750000].plot(ax = ax , markersize = 20, color = 'blue',marker = 'o',label = 'pricey')
plt.legend()
它只返回一个错误:数值错误:'box_aspect'和'fig_aspect'必须为正数不确定为什么加载图形有效,但添加的点使其中断。
只是想了解这一点和修复,如果可以的话。谢谢
3条答案
按热度按时间yzckvree1#
我通过设置
gdf.plot(aspect=1)
解决了这个问题。在以前版本的geopandas中没有发生过这种情况,但突然开始发生,我认为这只是这个参数,因为它可以在您给出的错误中读取。czq61nw12#
我遇到了这个问题,发现Shapely多边形(x,y)坐标是(经度,纬度),所以我只需要在zip函数中切换lat/long顺序,一切都正常工作。感谢this thread的解决方案。
mxg2im7a3#
这是一个典型的CRS与实际几何形状不匹配的情况。注意OP滚动了自己的GeoDataFrame,创建了自己的几何形状列表 * 并进行了横向转置 *。因此,会出现这种不匹配。
请注意,用于创建GeoDataFrame的documentation以这种方式给出了示例
和国家
我们使用geopandas
points_from_xy()
将Longitude和Latitude转换为shapely.Point
对象列表,并在创建GeoDataFrame时将其设置为几何体。(请注意,points_from_xy()
是[Point(x, y) for x, y in zip(df.Longitude, df.Latitude)]
的增强 Package 器)注意
zip()
中纬度/经度的顺序相对于OP的颠倒。我发现这个线程在加载一个
.gpkg
之后遇到了这个错误,这个错误与之前的python环境是相同的,这是一个数据问题,而不是geopandas版本的问题,在我的例子中,我在阅读它之后检查了数据边界,并得到了然后检查存储的CRS,我得到了
等等,这些边界看起来不像纬度/经度!是的,
aspect=1
标志抑制了错误,并允许绘图渲染,但这不是正确的修复。