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

如何使用Matplotlib在图片上绘制线条并自定义坐标轴数值

你可以通过matplotlib提供的刻度设置方法自定义x、y轴的显示数值,具体实现方式如下:

核心实现逻辑

使用plt.xticks()和plt.yticks()两个方法即可完成刻度自定义:

  • 第一个参数ticks传入刻度对应的图片实际像素位置,和你绘制线条时使用的坐标体系保持一致
  • 第二个参数labels传入你想要在坐标轴上显示的自定义数值,长度需要和ticks列表匹配
    如果仅需要调整坐标轴的取值范围,不需要修改刻度标签,直接使用plt.xlim()、plt.ylim()设置范围即可。

修改后的完整代码

from matplotlib import image
from matplotlib import pyplot as plt


# 读取工作目录下存储的图片
data = image.imread('Darwin_Maps.png')

# 从(200, 300)到(500, 100)绘制一条线条
x = [200, 500]
y = [300, 100]
plt.plot(x, y, color="white", linewidth=3)
plt.imshow(data)

# 自定义x轴刻度:像素位置0~700对应显示数值0~70,间隔为10
plt.xticks(ticks=[i*100 for i in range(8)], labels=[i*10 for i in range(8)])
# 自定义y轴刻度:像素位置0~500对应显示数值0~100,间隔为20
plt.yticks(ticks=[i*100 for i in range(6)], labels=[i*20 for i in range(6)])

# 若仅需调整坐标轴取值范围,不需要修改刻度标签,可取消注释以下两行
# plt.xlim(0, 700)
# plt.ylim(500, 0)  # imshow默认y轴原点在图片顶部,因此范围要反向设置保持和原图方向一致

plt.show()

注意事项

matplotlib的imshow方法默认将y轴原点设置在图片顶部,和常规绘图的坐标系方向相反,如果你需要调整为y轴从下到上递增,可以在imshow时传入参数origin='lower',同时调整绘制线条的y坐标即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:57:02