2017-02-23 138 views
2

我一直在試圖讓鼠標x,y座標變量根據matplotlib繪圖比例不是像素,但它只返回我的整數組件像0.0或1.0 我想返回準確的數字,如0.1245 這裏是我的代碼獲取座標matplotlib情節圖python與鼠標點擊

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() 
+0

這很有趣。我在Python 3中嘗試了這一點,除了小的變化('Tkinter' - >'tkinter',字符串格式化和'def onclick(self,event)' - >'def onclick(event)'),它給了我完全準確的結果。 – TidB

+0

actualy是python 3與python有一些小的變化不同,感謝回覆:) –

回答

0

得到準確的結果,ixiy是你想要的精確度浮動。這個問題在

print 'x = %d, y = %d' % (ix, iy) 

%d格式意味着數應顯示爲整數,正是發生在這裏。如果你嘗試%f浮法表示:

print 'x = %f, y = %f' % (ix, iy) 

你會看到你得到準確的結果。

+0

謝謝幫助! –