ピクセルではなくmatplotlibプロットスケールに従って変数にマウスのx、y座標を取得しようとしていますが、0.0や1.0などの整数コンポーネントのみが返されます。0.1245などの正確な数値を返したいのですが、ここにコードがあります。
import matplotlib
import Tkinter as tk
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.figure import Figure
import numpy as np
import matplotlib.pyplot as plt
def onclick(self,event):
ix, iy = float(event.xdata), float(event.ydata)
print 'x = %d, y = %d' % (
ix, iy)
root = tk.Tk()
circle1 = plt.Circle((0, 0), 1, color='blue')
f = plt.figure()
a = f.add_subplot(111)
f, a = plt.subplots()
a.add_artist(circle1)
a.set_xlim(-1.1, +1.1)
a.set_ylim(-1.1, +1.1)
#a.plot(circle1)
canvas = FigureCanvasTkAgg(f, master=root)
canvas.show()
canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=1)
canvas.mpl_connect('button_press_event', onclick)
canvas._tkcanvas.pack(side=tk.TOP, fill=tk.BOTH, expand=1)
root.mainloop()
あなたはされている正確な結果を得ること、ix
そしてiy
あなたが望む正確に山車です。問題は、
print 'x = %d, y = %d' % (ix, iy)
%d
数値は整数として表示される必要があることを意味し、まさにそれがここで起こっています。%f
フロート表現を試してみる場合:
print 'x = %f, y = %f' % (ix, iy)
正確な結果が得られていることがわかります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加