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

如何在Matplotlib极坐标图中用图片替换x标记?

极坐标位置替换为图片的解决方案

不用手动调整add_axes的坐标比例,直接用OffsetImage和AnnotationBbox就能批量把极坐标点替换成图片,步骤如下:

完整代码

import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
from matplotlib.offsetbox import OffsetImage, AnnotationBbox

# 创建画布并设置分辨率
fig = plt.figure(dpi=200)
# 设置极坐标坐标轴
ax = fig.add_subplot(projection='polar')

# 极坐标数据
r = [8,8,8,8,8,8,8,8,8]
theta = np.deg2rad(np.arange(45,406,45))

# 加载要替换的图片(替换成你的图片路径)
img = Image.open("your_image.png")
# 极坐标转笛卡尔坐标,用于定位图片
x = np.cos(theta) * r
y = np.sin(theta) * r

# 批量添加图片到每个坐标点
for xi, yi in zip(x, y):
    # 设置图片缩放比例,根据需求调整
    img_box = OffsetImage(img, zoom=0.1)
    # 添加图片标注,frameon=False去掉边框,box_alignment控制对齐
    ab = AnnotationBbox(img_box, (xi, yi), frameon=False, box_alignment=(0.5, 0.5))
    ax.add_artist(ab)

# 设置坐标轴范围
ax.set_ylim(0,12)

plt.show()

关键说明

  • 极坐标转笛卡尔坐标:通过np.cos(theta)*r和np.sin(theta)*r计算出图片在坐标轴上的笛卡尔位置,避免手动计算坐标比例
  • OffsetImage的zoom参数控制图片显示大小,可根据实际需求调整
  • AnnotationBbox负责将图片绑定到指定坐标,box_alignment=(0.5,0.5)让图片中心对齐极坐标点,frameon=False移除不必要的边框

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 05:15:24