2016-03-19 14 views
2

Ich habe ein Array von Kreis-Patches in Matplotlib erstellt. Ich brauche eine Liste der Zentren dieser Kreise Patches, für einige Berechnungen.Mittelpunkt eines Kreis-Patches in Matplotlib

Auf der Dokumentationsseite des Kreis Patch (siehe matplotlib.patches.Circle auf this Seite), dort sagt, wie in mycircle.get_center keine ähnlichen Methoden zu sein scheint, die Mitte des Kreises zum Extrahieren. Sie haben eine für den Radius, aber nicht für die Mitte. Irgendwelche Vorschläge?

EDIT:

Hier einige Code. Im Grunde möchte ich eine interaktive App erstellen, in der der Benutzer mit der Maus auf einige Disks klickt, auf den Bildschirm. Die einzige Einschränkung bei der Positionierung dieser Festplatten besteht darin, dass sie alle nicht zusammenhängend sein sollten. Wenn der Benutzer versucht, einen Datenträger mit einem Mausklick einzufügen, möchte ich prüfen, ob der neue Datenträger die bereits eingegebenen Datenträger schneidet.

Ich speichere alle Kreise Patches in einem Array namens disk_arrangement. Sicher, ich könnte ein separates Array erstellen Aufnahme der Zentren, um meine Arbeit zu tun, aber das scheint hässlich. Deshalb habe ich Matplotlib als Methode hoffen, dass die Mitte eines gegebenen Kreis-Patch zu extrahieren

def place_disk(event, disk_arrangement=[]): 

    def is_inside_an_existing_disk(center_x, center_y): 
     if disk_arrangement != []: 
     for existing_disk in disk_arrangement: 
      if existing_disk.contains(event): #### How to do this???? 
       return True 
     return False 

    if event.name  == 'button_press_event' and \ 
     event.dblclick == True     and \ 
     event.xdata != None     and \ 
     event.ydata != None     and \ 
     is_inside_an_existing_disk(event.xdata,event.ydata) == False : 
       cursor_circle = mpl.patches.Circle((event.xdata, 
                event.ydata), 
                radius=0.3, 
                facecolor= 'green') 
       disk_arrangement.append(cursor_circle) 
       ax.add_patch(cursor_circle) 
       fig.canvas.draw() 

Ich verwende Python 2.7.11 auf Ubuntu 14.04

+0

Geben Sie nicht die Koordinaten des Zentrums bei der Definition der Patches? Ein minimales Arbeitsbeispiel wäre nützlich. – nluigi

+0

@nluigi Siehe Bearbeiten. Vielen Dank! – smilingbuddha

Antwort

3

Versuchen Sie das center Attribut, z.B. für einen Patch initialisiert mit:

from matplotlib.patches import Circle  
circ = Circle((1, 2), radius=1) 
circ.center == (1,2) #should return True 

Um alle Attribute eines Objekts zu bestimmen Sie dir verwenden können, beispielsweise dir(circ) gibt alle Attribute des circ Objekts einschließlich center, radius usw.

Verwandte Themen