我正在编写一个镖机器人程序。已经计算出了机器人击中靶板的位置,现在我想使用matplotlib进行可视化。
我已有的是: 使用常规的极坐标投影显示机器人击中靶板的位置,并带有轴和其他内容。
我需要的是: 将镖靶设置为背景,并在其上绘制X&Y(或theta & r)。
我尝试过: 将我的代码片段与以下问题的接受答案连接起来:Plot polar plot on top of image? 这是我现在的代码:
图片看起来是这样的:
但结果并不令人满意:
我做错了什么?
我已有的是: 使用常规的极坐标投影显示机器人击中靶板的位置,并带有轴和其他内容。
我需要的是: 将镖靶设置为背景,并在其上绘制X&Y(或theta & r)。
我尝试过: 将我的代码片段与以下问题的接受答案连接起来:Plot polar plot on top of image? 这是我现在的代码:
import numpy as np
from matplotlib import pyplot as plt
# throw three darts:
rad = np.asarray([10000, 11000, 9400]) # consider these as distances from bull's eye in 10*µm
azi = np.asarray([352, 0, 10]) # in degrees
azi = np.deg2rad(azi) # conversion into radians
fig = plt.gcf()
axes_coords = [0, 0, 1, 1] # plotting full width and height
ax_polar = fig.add_axes(axes_coords, projection='polar')
ax_polar.patch.set_alpha(0)
ax_polar.scatter(azi, rad)
ax_polar.set_ylim(0, 17000)
ax_polar.set_xlim(0, 2*np.pi)
ax_polar.set_theta_offset(0.5*np.pi) # 0° should be on top, not right
ax_polar.set_theta_direction(direction=-1) # clockwise
plt.show()
以上代码运行正常。如果您运行它,您会看到机器人击中了靠近T20区的目标,该区域位于靶心正上方。
现在,如果我想添加图像,则需要在plt.show()
之前插入以下代码:
pic = plt.imread('Board_cd.png')
ax_image = fig.add_axes(axes_coords)
ax_image.imshow(pic, alpha=.5)
ax_image.axis('off') # don't show the axes ticks/lines/etc. associated with the image
图片看起来是这样的:
![Dartboard](https://istack.dev59.com/sdGf0.webp)
![enter image description here](https://istack.dev59.com/s8GWA.webp)