我想在极坐标图中的特定点插入一个小图标。
据我了解,setOnFinished()
收到fig.figimage(image, x, y)
作为显示坐标。我使用x,y
,但这无法正常工作。
我的代码如下:
ax.transData.transform_point((theta, radius))
Here's the result,而from numpy import *
from matplotlib.pyplot import *
t = arange(0, 2*pi, 0.01)
r = ones(t.size)
fig = gcf()
ax = fig.add_subplot(111, projection='polar')
ax.plot(t, r)
x, y = ax.transData.transform((pi/4, 1.0))
img = imread('die.png')
fig.figimage(img, x, y)
show()
的左下角应以45度和半径1接触蓝线。
答案 0 :(得分:0)
在变换为您提供正确的坐标之前,您需要先绘制图形。
fig.canvas.draw()
x, y = ax.transData.transform((pi/4, 1.0))
这是因为极坐标图的轴位置仅在实际绘制图形时才确定。事先尝试变形会导致错误的坐标。
通常,在这种情况下,我建议使用AnnotationBbox
而不是figimage
。
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.offsetbox import OffsetImage, AnnotationBbox
t = np.arange(0, 2*np.pi, 0.01)
r = np.ones(t.size)
fig = plt.gcf()
ax = fig.add_subplot(111, projection='polar')
ax.plot(t, r)
img = plt.imread('https://i.stack.imgur.com/9qe6z.png')
imagebox = OffsetImage(img, zoom=0.2)
imagebox.image.axes = ax
ab = AnnotationBbox(imagebox, (np.pi/4, 1.0),
box_alignment=(0., 0),
xycoords='data', pad=0)
ax.add_artist(ab)
plt.show()