Matplotlib LinearSegmentedColormap不可哈希类型错误求助
解决Pandas散点图报错:unhashable type: 'LinearSegmentedColormap'
问题原因
你当前使用的Pandas版本中,DataFrame.plot(scatter)的cmap参数期望接收字符串形式的色图名称,但你传入了plt.get_cmap("jet")返回的LinearSegmentedColormap实例对象。当Pandas尝试将这个对象作为键去Matplotlib的色图注册表中查找时,因为对象不可哈希,所以抛出TypeError: unhashable type: 'LinearSegmentedColormap'。
解决方案
将cmap参数的值从色图实例改为对应的字符串名称即可:
修改后的代码
%matplotlib inline import matplotlib.pyplot as plt housing.plot(kind="scatter", x="longitude", y="latitude", alpha=0.4, s=housing["population"]/100, label="population", figsize=(10,7), c="median_house_value", cmap="jet", colorbar=True, sharex=False) plt.legend() save_fig("housing_prices_scatterplot")
补充说明
如果确实需要使用自定义的色图实例(而非内置名称),可以绕过Pandas的plot接口,直接用Matplotlib原生的scatter函数绘制,但对于你的场景,直接传入色图名称是最简单高效的解决方式。
内容的提问来源于stack exchange,提问作者Arya Vahedi
相关产品推荐
相关产品推荐

