par python et en matplotlib comment calculer la distance entre deux cliques et afficher cette distance comme la photo ci-dessous
![]()
par python et en matplotlib comment calculer la distance entre deux cliques et afficher cette distance comme la photo ci-dessous
![]()
Salut,
Il faut commencer par décomposer çà en une suite d'opération comme récupérer la position des clicks (via l'event handling), trouver les points les plus proches, calculer la distance, annoter la figure,...
Puis on réalise chaque opération en regardant la documentation ou en trouvant des exemples sur Internet.
Enfin on essaie de les composer pour finaliser le tout.
- W
Pouvez-vous donner un exemple
Il suffit de chercher avec le nouveau mot clé qui vous a été donné. Et en moins d'une minute je tombe sur un exemple qui fait déjà une bonne partie de ce que vous voulez faire :
https://matplotlib.org/users/event_handling.html
(à savoir le 2ieme bout de code sur cette page)
pouvez-vous corriger le code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 from PyQt4.QtCore import * from PyQt4.QtGui import * import matplotlib.pyplot as plt class main(QWidget): def __init__(self): QWidget.__init__(self) self.setupUi(self) self.figure = plt.figure(figsize=(50,50)) self.canvas = FigureCanvas(self.figure) self.toolbar = NavigationToolbar(self.canvas, self) cid = self.figure.canvas.mpl_connect('button_press_event', self.onclick) def onclick(self,event): if event.button == 1: global x,y x = event.xdata y = event.ydata self.linepoints = np.append(self.linepoints, x) self.linepoints = np.append(self.linepoints, y) if np.size(self.linepoints) == 4: plt.plot((self.linepoints[0], self.linepoints[2]), (self.linepoints[1], self.linepoints[3]), '--') self.figure, ax = plt.subplots() self.linepoints = np.array([]) self.show_plot() def show_plot(self): self.figure.clear() ax = self.figure.add_subplot(111) self.canvas.draw() import sys app = QApplication(sys.argv) window=QWidget() window.resize(500,500) window.show() app.exec_()
Partager