Bonjour à tous,
J'ai un code (que je ne peux pas dévoiler entièrement ici) me permettant d'afficher une image dans une fenêtre PyQt5 grâce à une classe matplotlib widget. Dans cette même classe, j'ai une autre fonction qui me permet d'afficher des ronds sur cette image avec des coordonnées x et y. Dans un autre programme, j'ai une fonction qui appelle ma fonction dessinant mes ronds de ma classe.
Jusqu'ici tout va bien. Maintenant ce que j'aimerais faire c'est afficher du texte sur chacun de mes ronds mais je n'y arrive pas.
Voici mes différents codes :
Celui-ci correspond à ma classe Matplotlib Widget avec ma fonction PlotDataPoints2 pour dessiner mes ronds que j'appelle dans le code en dessous de celui-ci:
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 class MatplotlibWidget1(Canvas): def __init__(self, parent=None, dpi=100, hold=False): super(MatplotlibWidget1, self).__init__(Figure()) self.setParent(parent) self.figure = Figure(figsize=(100,100),dpi=dpi) self.canvas = Canvas(self.figure) self.theplot = self.figure.add_subplot(111) self.theplot.grid(False) self.theplot.spines['bottom'].set_visible(False) self.theplot.set_xticklabels([]) self.theplot.set_xticks([]) self.theplot.axes.get_xaxis().set_visible(False) self.theplot.spines['left'].set_visible(False) self.theplot.set_yticklabels([]) self.theplot.set_yticks([]) self.theplot.axes.get_yaxis().set_visible(False) self.theplot.set_xticklabels([]) self.theplot.set_yticklabels([]) # self.figure.tight_layout(rect=[None,None,None,0.75]) self.theplot.imshow(img1,zorder=0,extent=[-111,111,-4,104]) def plotDataPoints2(self, x, y,color): self.theplot.imshow(img1,extent=[-111,111,-4,104]) circle=matplotlib.patches.Circle((x,y), 4, color='%s'%color,alpha=0.5) self.theplot.add_artist(circle) self.draw()
Maintenant dans un autre programme j'ai ma fonction DessinerRond qui appel ma fonction DataPoints dans ma classe précédente :
Si je répète, mes ronds s'affichent bien sur mon image avec les bonnes coordonnées et la bonne couleur. Mais je n'arrive pas à afficher les noms à côté de ces ronds (OK, BONJOUR etc...).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 def DessinerRond(self, Nom, xx, yy): color='darkblue' self.ui.mplwidget1.plotDataPoints2(xx, yy, color) List=[['OK',-33,28],['BONJOUR',-33,15],['COUCOU',-33,45],['STOP',-33,65]] for j in range(len(List)): DessinerRond(self,List[j][0],List[j][1],List[j][2])
J'ai essayé avec self.theplot.annotate dans ma fonction PlotDataPoints2 mais rien ne s'affiche.
Merci pour votre aide!
Partager