You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在印度地图上叠加绘制折线图?解决双图不同轴问题

折线图叠加印度地图的解决方案

你的代码问题在于创建了两个独立的坐标轴:df.plot()会默认生成一个坐标轴,后续fig, ax = plt.subplots()又创建了新的坐标轴,导致折线和地图分别在不同画布上显示。要实现叠加,需复用同一个坐标轴对象,步骤如下:

修改后的代码

import pandas as pd
import matplotlib.pyplot as plt

# 创建示例数据框
df = pd.DataFrame({
    'x': [15.121270, 12.103705, 8.583936, 18.173364, 14.175727],
    'y': [4246.948356, 4248.927074, 4247.596317, 4244.749973, 4290.142397]
})

# 读取地图图片
im = plt.imread("Map_of_India.jpg")

# 创建画布和统一的坐标轴
fig, ax = plt.subplots()

# 在坐标轴上绘制地图,extent参数匹配数据的x、y范围
# 格式为 [x最小值, x最大值, y最小值, y最大值],确保地图与数据坐标对齐
ax.imshow(im, extent=[df['x'].min(), df['x'].max(), df['y'].min(), df['y'].max()], aspect='auto')

# 在同一坐标轴上绘制折线图
df.plot('x', 'y', kind='line', legend=None, ax=ax)

# 设置坐标轴标签
ax.set_xlabel('IPP Longitude')
ax.set_ylabel('IPP Latitude')

plt.show()

关键说明

  • 复用坐标轴:通过df.plot(..., ax=ax)指定折线图绘制在已创建的ax坐标轴上,避免生成新画布。
  • 地图范围匹配:extent参数用于定义地图在坐标轴上的显示范围,必须与你的数据x(经度)、y(纬度)的取值范围对应,否则地图和折线会错位。如果你的y值(示例中4244-4290)不是真实纬度,需要先确认数据的坐标系统,调整extent或转换数据单位。
  • 自适应比例:aspect='auto'让地图自适应坐标轴比例,避免图像拉伸变形。

内容的提问来源于stack exchange,提问作者Prater

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 21:12:29