如何从地图生成函数返回fig对象,实现自定义设置后再保存?
问题解决:正确返回matplotlib Figure对象实现自定义参数后保存地图
问题原因
你当前的代码中,调用makemap函数时没有将返回的Figure对象赋值给fig变量,导致后续执行fig.savefig时找不到该变量;而尝试return fig()是错误操作,因为fig是matplotlib的Figure实例,并非可调用函数,因此触发报错。
解决方案
只需将makemap函数的返回值赋值给fig变量,之后就可以进行用户自定义参数修改,最后执行保存操作。修改后的完整代码示例如下:
def makemap(n, s, e, w): fig, ax = ox.plot_graph(G, node_size=0, dpi=1200, bgcolor="#000038", save=False, edge_color=roadColors, edge_linewidth=roadWidths, edge_alpha=1) fig.tight_layout(pad=0) return fig # 调用函数并接收返回的fig对象 fig = makemap(north, south, east, west) # 加入用户交互逻辑,比如询问修改背景色 user_bgcolor = input("请输入新的背景色(如#FFFFFF):") if user_bgcolor: fig.set_facecolor(user_bgcolor) # 执行保存操作 fig.savefig(f"{place}.png", dpi=1200, bbox_inches='tight', format="png", facecolor=fig.get_facecolor())
关键说明
- 必须将
makemap的返回值赋值给fig变量,这样后续代码才能引用到生成的Figure实例 - 用户交互部分可以根据需求扩展,比如修改边缘颜色、线宽等参数,直接通过
fig或ax对象调整即可 - 保存时使用
fig.get_facecolor()可确保图片背景色与修改后的设置一致
内容的提问来源于stack exchange,提问作者Phytonall
相关产品推荐
相关产品推荐

