python - 尝试重新定位 geopandas 图例时出现错误“没有带有标签的句柄”
问题描述
只要我不尝试更改其图例的位置,我的情节就可以正常工作。(我正在绘制一个 GeoDataFrame。)
# %%
ax = NE_shp.plot(column=NE_shp.iloc[:,4], figsize=(10,3), scheme='quantiles', edgecolor='k', k=10, legend=True)
#ax.legend(loc='upper left', bbox_to_anchor=(1, 1)) #This is the line for relocating legend
ax.set_title('The Map', fontsize=16)
ax.axis('off')
但是当我使用现在被屏蔽的行作为注释来更改图例位置时,会出现以下错误,并且图例未显示如下图
No handles with labels found to put in legend.
(我怀疑它是否与scheme='quantiles'
原因有关,它不是 matplotlib 固有的,而是由 pySAL 添加的。)
非常感谢您的建议。
解决方案
GeoDataFrame.plot
提供一个legend_kwds
参数,它需要一个字典。这本字典将传递给.legend
or .colorbar
,具体取决于您制作的情节类型。所以论点loc='upper left', bbox_to_anchor=(1, 1)
需要像
gdf.plot(..., legend=True, legend_kwds=dict(loc='upper left', bbox_to_anchor=(1, 1)))
完整的可运行示例:
import geopandas as gpd
print(gpd.__version__) ## 0.5
import numpy as np; np.random.seed(42)
import matplotlib.pyplot as plt
gdf = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
gdf['quant']=np.random.rand(len(gdf))*100-20
fig, ax = plt.subplots(figsize=(9,4))
fig.subplots_adjust(right=0.7)
gdf.plot(column='quant', scheme='quantiles', edgecolor='k', k=10,
legend=True, legend_kwds=dict(loc='upper left', bbox_to_anchor=(1, 1)), ax=ax)
plt.show()
推荐阅读
- python - 根据两个条件预测某人离开的概率
- android - TabLayout 文本重力启动
- java - 我想根据从我的 firebase 数据库中获得的值打开一个特定的活动
- python - pyspark 数据帧的数据类型与 Presto 数据类型的详尽映射是什么?
- python - 如何获取要在请求中设置的 cookie 值?
- jenkins - 如果有两个 jenkins freestyleproject 具有相同的 scm git url,我如何仅触发特定的 freestyleproject?
- python - 检查两行并插入新行,如果它们在增加 starttime 后不匹配
- sql - 创建一个包含数组列 ms sql 的表
- youtube - 向现有视频 Youtube API 插入字幕,错误“请求不包含字幕轨道内容。”
- java - jstack输出中的大十六进制数字显示“停车等待......”是什么意思?