Auswahl der Markergröße in Matplotlib

9

Ich mache ein Streudiagramm mit quadratischen Markierungen in Matplotlib wie diesem:

.

Ich möchte so etwas erreichen:

Was bedeutet, dass ich die Größe des Markers und die Größe / das Verhältnis der Figur so einstellen muss, dass zwischen den Markern kein Leerraum ist. Außerdem sollte pro Indexeinheit ein Marker vorhanden sein ( x und y sind beide Ganzzahlen). Wenn also y von 60 auf 100 geht, sollte es sein 40 Markierungen in y Richtung. Momentan stelle ich es manuell ein. Irgendeine Idee, was ist der beste Weg, dies zu erreichen?

    
elyase 29.05.2013, 16:22
quelle

1 Antwort

7

Ich habe zwei Möglichkeiten gefunden:

Die erste basiert auf diese Antwort . Grundsätzlich bestimmen Sie die Anzahl der Pixel zwischen den benachbarten Datenpunkten und verwenden Sie diese, um die Markergröße festzulegen. Die Markergröße in scatter wird als Fläche angegeben.

%Vor%

Der Nachteil dieses ersten Ansatzes ist, dass sich die Symbole überlappen. Ich konnte den Fehler im Ansatz nicht finden. Ich könnte s1 manuell auf

einstellen %Vor%

um bessere Ergebnisse zu erzielen, aber ich konnte keine Logik hinter 13. ermitteln.

Daher ein zweiter Ansatz basierend auf dieser Antwort . Hier werden einzelne Quadrate gezeichnet und entsprechend bemessen. In gewisser Weise ist es ein manuelles Streudiagramm (eine Schleife wird verwendet, um die Figur zu konstruieren), so dass es je nach Datensatz eine Weile dauern kann.

Bei diesem Ansatz wird patches anstelle von scatter verwendet. Achten Sie also darauf,

einzuschließen %Vor%

Wieder mit den gleichen Datenpunkten:

%Vor%

Ein Kommentar zu Rectangle : Die Koordinaten sind die untere linke Ecke, daher x-h/2.
Dieser Ansatz ergibt zusammenhängende Rechtecke. Wenn ich mir die Ausgabe hier genau ansehe, scheinen sie sich immer noch um ein Pixel zu überlappen - ich bin mir auch nicht sicher, ob das helfen kann.

    
Schorsch 01.06.2013, 16:12
quelle

Tags und Links