如何调整迈阿密地图图片尺寸以适配房价聚类可视化?
解决迈阿密地图图片与房价聚类散点图适配问题
你的问题核心是地图图片的宽高比与设置的地理范围(extent)比例不匹配,导致图片拉伸变形,无法和经纬度散点正确对齐。以下是具体的解决方案:
关键修改点
- 计算图片原生宽高比,确保显示时保持比例不变
- 强制坐标轴范围与地图的地理范围一致,避免散点和地图错位
修改后的代码
import matplotlib.pyplot as plt import matplotlib.image as mpimg miami = mpimg.imread('/Users/zahidlaguna/Downloads/Miami.png') img_height, img_width = miami.shape[:2] # 计算图片宽高比 img_aspect = img_width / img_height # 定义地理范围 extent = [-80.5, -79.5, 25.5, 26.5] # 计算地理范围的宽高比 geo_aspect = (extent[1] - extent[0]) / (extent[3] - extent[2]) fig, ax = plt.subplots(figsize=(8, 8)) # 绘制散点图 ax.scatter(X_train['LONGITUDE'], X_train['LATITUDE'], c=fits[3].labels_, cmap='Set1', alpha=0.5) # 显示地图,设置aspect参数匹配宽高比 ax.imshow(miami, extent=extent, alpha=0.5, aspect=img_aspect / geo_aspect) # 锁定坐标轴范围与地图范围一致 ax.set_xlim(extent[0], extent[1]) ax.set_ylim(extent[2], extent[3]) plt.xlabel('Longitude') plt.ylabel('Latitude') plt.title('Miami Housing Clusters') plt.show()
额外说明
- 如果你的迈阿密地图图片对应的实际地理范围和你设置的
extent不一致,需要先确认图片正确的经纬度范围,再修改extent参数。 - 若希望保持坐标轴为正方形,可以调整
figsize的比例,比如根据图片宽高比设置figsize=(10, 10/img_aspect),这样整体显示更协调。
内容的提问来源于stack exchange,提问作者Zahid Laguna
相关产品推荐
相关产品推荐

