OSMNX使用plot_graph生成指定像素宽度图像的问题咨询
参数对应关系说明
- 基础计算逻辑:图像像素尺寸 = 画布尺寸(单位:英寸) × DPI,理想无适配的场景下
figsize=(20,20)加dpi=300会输出6000×6000像素的图像。 - 你实际输出尺寸和理论值不符的原因:OSMNX的
plot_graph方法默认会保留路网的原始地理宽高比,不会强制拉伸图像匹配你设置的正方形figsize,会自动调整画布的有效尺寸避免变形。你当前路网的宽高比为4650:2719≈1.71:1,20×20英寸的正方形画布放不下1.71:1比例的20英寸宽度路网,因此OSMNX自动把有效画布宽度缩小到15.5英寸(15.5×300=4650像素),对应高度缩小到约9.06英寸(9.06×300≈2719像素)。
调整参数实现8500像素宽度的方法
你可以固定DPI不变(300DPI可以保证输出图像的清晰度),先计算所需的画布宽度:
所需画布宽度(英寸)= 目标像素宽度 ÷ DPI = 8500 ÷ 300 ≈ 28.33
由于plot_graph会自动按路网宽高比适配高度,你只要把figsize的第一个参数设为计算得到的宽度,第二个参数随便设置一个大于对应高度的值即可,调整后的代码如下:
fig, ax = ox.plot_graph(G, bgcolor='k', edge_color=ec, node_size=8, edge_linewidth=1, edge_alpha=1, figsize=(28.33, 28.33), dpi=300, save=True, filepath='image.png')
- 如果需要自定义DPI,按上述公式反推画布宽度即可:比如你要设置DPI为600,对应画布宽度就是8500÷600≈14.17英寸,把
figsize第一个值改为14.17即可。 - 非必要不推荐添加
tight=False参数关闭宽高比适配,否则会导致路网被拉伸变形。
内容的提问来源于stack exchange,提问作者Peter Estiven
相关产品推荐
相关产品推荐

