已解决AttributeError: ‘Basemap‘ object has no attribute ‘states_info‘

文章讲述了在使用matplotlib和Basemap库绘制美国人口密度地图时遇到的AttributeError,具体问题是Basemap对象缺少states_info属性。报错原因是可能使用的Basemap库版本过低或安装不完整。解决方案包括升级库、检查安装、使用替代地图库如cartopy或folium,以及检查代码中的其他错误。作者还提供了VIP答疑群以获取更详细的帮助和支持。
摘要由CSDN通过智能技术生成

已解决AttributeError: ‘Basemap‘ object has no attribute ‘states_info‘










报错问题



粉丝群里面的一个小伙伴遇到问题跑来私信我,想用matplotlib绘图,但是发生了报错(当时他心里瞬间凉了一大截,跑来找我求助,然后顺利帮助他解决了,顺便记录一下希望可以帮助到更多遇到这个bug不会解决的小伙伴),报错代码如下所示:

import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
import numpy as np

# 创建地图
fig = plt.figure(figsize=(8, 6))
m = Basemap(llcrnrlon=-119, llcrnrlat=22, urcrnrlon=-64, urcrnrlat=49, projection='lcc', lat_1=33, lat_2=45, lon_0=-95)
m.drawmapboundary(fill_color='white', linewidth=0.5)
m.fillcontinents(color='gray', lake_color='white')
m.drawcoastlines(linewidth=0.5)

# 绘制区域图
popdensity = {
    'California': 213.3,
    'Texas': 98.1,
    'New York': 412.3,
    'Florida': 350.6,
    'Illinois': 231.6,
    'Pennsylvania': 284.3,
    'Ohio': 182.7,
    'Georgia': 166.7,
    'North Carolina': 206.2,
    'Michigan': 175.5,
    'New Jersey': 1078.3,
    'Virginia': 204.5,
    'Washington': 102.6,
    'Arizona': 56.3,
    'Massachusetts': 809.3,
    'Tennessee': 153.9,
    'Indiana': 181.7,
    'Missouri': 87.1,
    'Maryland': 596.3,
    'Wisconsin': 105.2,
    'Minnesota': 66.6,
    'Colorado': 50.2,
    'Alabama': 94.4,
    'South Carolina': 142.4,
    'Louisiana': 102.6,
    'Kentucky': 109.9,
    'Oregon': 36.7,
    'Oklahoma': 55.2,
    'Connecticut': 738.1,
    'Iowa': 54.5,
    'Mississippi': 63.2,
    'Arkansas': 56.0,
    'Utah': 33.6,
    'Kansas': 35.3,
    'Nevada': 24.6,
    'New Mexico': 17.2,
    'Nebraska': 23.8,
    'West Virginia': 76.5,
    'Idaho': 19.1,
    'Hawaii': 214.1,
    'New Hampshire': 147.0,
    'Maine': 43.1,
    'Rhode Island': 1006.2,
    'Montana': 6.8,
    'Delaware': 460.8,
    'South Dakota': 10.7,
    'North Dakota': 9.7,
    'Alaska': 1.3,
    'District of Columbia': 9805.2,
    'Vermont': 67.9,
    'Wyoming': 5.8
}

colors = {}
statenames = []
cmap = plt.cm.Blues
vmin = 0
vmax = 1000
for shapedict in m.states_info:
    statename = shapedict['NAME']
    if statename in popdensity:
        pop = popdensity[statename]
        colors[statename] = cmap(np.sqrt((pop - vmin) / (vmax - vmin)))[:3]
    statenames.append(statename)

for nshape, seg in enumerate(m.states):
    if statenames[nshape] in colors:
        color = colors[statenames[nshape]]
    else:
        color = 'white'
    poly = plt.Polygon(seg, facecolor=color, edgecolor='gray', linewidth=0.5)
    plt.gca().add_patch(poly)

plt.title('US Population Density')
plt.show()

可以看到导包没有任何问题

在这里插入图片描述

运行代码后报错信息截图如下所示

在这里插入图片描述



报错翻译



报错信息翻译如下所示

属性错误: Basemap对象中没有找到名为’states_info’的属性




报错原因



报错原因

这个错误提示说明在Basemap对象中没有找到名为’states_info’的属性。这可能是因为您使用的版本过低或者安装不完整。





解决方法



1.升级Basemap库到最新版本。

pip install --upgrade Basemap

2.检查你的安装并确保所有依赖项都已安装和配置正确。

3.尝试使用其他地图库,如cartopy或folium,以替代Basemap。

4.检查您的代码中是否有其他错误或拼写错误,可能会导致此错误。

以上是此问题报错原因的解决方法,欢迎评论区留言讨论是否能解决,如果有用欢迎点赞收藏文章谢谢支持,博主才有动力持续记录遇到的问题!!!

千人全栈VIP答疑群联系博主帮忙解决报错

由于博主时间精力有限,每天私信人数太多,没办法每个粉丝都及时回复,所以优先回复VIP粉丝,可以通过订阅限时9.9付费专栏《100天精通Python从入门到就业》进入千人全栈VIP答疑群,获得优先解答机会(代码指导、远程服务),白嫖80G学习资料大礼包,专栏订阅地址:https://blog.csdn.net/yuan2019035055/category_11466020.html

  • 优点作者优先解答机会(代码指导、远程服务),群里大佬众多可以抱团取暖(大厂内推机会),此专栏文章是专门针对零基础和需要进阶提升的同学所准备的一套完整教学,从0到100的不断进阶深入,后续还有实战项目,轻松应对面试!

  • 专栏福利简历指导、招聘内推、每周送实体书、80G全栈学习视频、300本IT电子书:Python、Java、前端、大数据、数据库、算法、爬虫、数据分析、机器学习、面试题库等等

  • 注意:如果希望得到及时回复,和大佬们交流学习,订阅专栏后私信博主进千人VIP答疑群在这里插入图片描述
    在这里插入图片描述

免费资料获取,更多粉丝福利,关注下方公众号获取

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

袁袁袁袁满

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值