transformation tutorialをご覧ください。ここでは、ポイントを1つの単位/参照フレームで別のものに変換する方法について説明します。ここ
これを実証するいくつかのコードである:
import matplotlib.pyplot as plt
import matplotlib.patches as patches
SCALE=1
MOUSE_CLICK = (80*SCALE,80*SCALE)
fig = plt.figure(figsize=(1*SCALE,1*SCALE),dpi=100) # 100x100
rect = [.1,.1,.8,.8]
ax = fig.add_axes(rect)
ax.plot(range(9),range(9))
# tranformations to help convert pixels to other units
fromPixelToFig = fig.transFigure.inverted()
fromPixelToData = ax.transData.inverted()
origin = ax.transData.transform((0,0))
print "origin in Pixels = ",origin
print "origin in Figure units = ",fromPixelToFig.transform(origin)
print "click in Pixels: ",MOUSE_CLICK
print "click in Figure Units: ",fromPixelToFig.transform(MOUSE_CLICK)
clickInData = fromPixelToData.transform(MOUSE_CLICK)
print "click in Data Units: ",clickInData
circ = patches.Circle(clickInData,radius=.25)
ax.add_patch(circ)
fig.savefig('mouseClick.png')
このスクリプトの出力である:
origin in Pixels = [ 10. 10.]
origin in Figure units = [ 0.1 0.1]
click in Pixels: (80, 80)
click in Figure Units: [ 0.8 0.8]
click in Data Units: [ 7. 7.]
これは、以下の(小さな)図に結果:
これは、より大きな例(SCALE
は4に設定されています):
ヤンさん、ありがとうございました –