已解决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答疑群