2017-02-23 4 views
2

Ich habe versucht, die Maus x, y Koordinaten zu Variablen nach Matplotlib Plot Maßstab nicht Pixel, aber es gibt mir nur die ganzzahligen Komponenten wie 0.0 oder 1.0 Ich möchte die genaue Zahl wie 0,1245 zurückkehren hier ist mein CodeGet Koordinaten von Matplotlib Plot Figur Python mit Mausklick

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

Das ist interessant. Ich versuche das in Python 3, und abgesehen von kleinen Änderungen ('Tkinter' ->' tkinter', String-Formatierung und 'def onclick (self, event)' -> 'def onclick (event)'), gibt es mir perfekt genaue Ergebnisse. – TidB

+0

actualy ja Python 3 unterscheidet sich von Python mit einigen kleinen Änderungen, danke für die Antwort :) –

Antwort

0

Sie sind genaue Ergebnisse zu erzielen, ix und iy sind Schwimmer mit der Genauigkeit, die Sie wollen. Das Problem ist die Formatierung in

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

%d bedeutet, dass die Zahl sollte als eine ganze Zahl angezeigt werden, und genau hier das geschieht. Wenn Sie %f für Schwimmer Darstellung ausprobieren:

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

Sie werden sehen, dass Sie genaue Ergebnisse sind immer.

+0

danke es hat geholfen! –

Verwandte Themen