pyplot scatter plot Markierungsgröße
In der pyplot Dokument für die scatter-plot:
matplotlib.pyplot.scatter(x, y, s=20, c='b', marker='o', cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, facettierte=True, verts=None, hold=None, **kwargs)
Den marker Größe
s:
Größe im Punkte^2. Es ist ein scalar oder ein array mit der gleichen Länge wie x und y.
Welche Art von Gerät ist points^2
? Was bedeutet es? Tut s=100
bedeuten 10 pixel x 10 pixel
?
Grundsätzlich bin ich versucht zu machen, streudiagramme mit verschiedenen marker-Größen, und ich möchte, um herauszufinden, was sagt die s
- Nummer bedeuten.
InformationsquelleAutor der Frage LWZ | 2013-02-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann dies eine etwas verwirrende Art der Festlegung der Größe, aber Sie sind im Grunde die Angabe der Bereich der marker. Dies bedeutet, das doppelte der Breite (oder Höhe) der Markierung, die Sie brauchen, um zu erhöhen
s
um einen Faktor von 4. [weil A = WH => (2W)(2H)=4A]Gibt es einen Grund, jedoch, dass die Größe der Marker ist in dieser Weise definiert. Wegen der Skalierung der Fläche, die als Quadrat der Breite, die Verdoppelung der Breite tatsächlich angezeigt wird, erhöhen der Größe um mehr als einen Faktor 2 (in der Tat, es erhöht sich um Faktor 4). Um dies zu sehen betrachten wir die folgenden beiden Beispiele und die Ausgabe, die Sie produzieren.
gibt
Beachten Sie, wie die Größe steigt sehr schnell. Wenn wir stattdessen haben
gibt
Nun die scheinbare Größe der Marker steigt in etwa Linear in einer intuitiven Weise.
Als für die genaue Bedeutung dessen, was ein 'Punkt' ist, ist es ziemlich willkürlich für plotting-Zwecke, können Sie auch einfach skalieren alle Ihre Größen, die von einer Konstanten, bis Sie Aussehen vernünftig.
Hoffe, das hilft!
Edit: (Antwort auf Kommentar von @Emma)
Ist es wahrscheinlich verwirrend Formulierung meinerseits. Die Frage, die gestellt wird über eine Verdoppelung der Breite eines Kreises, so in dem ersten Bild für jeden Kreis (wie bewegen wir uns von Links nach rechts) die Breite ist das doppelte der vorherigen ein, so ist für den Bereich, dieser ist eine Exponentialfunktion mit der Basis 4. Ähnlich das zweite Beispiel: jeder Kreis hat Bereich Doppel die Letzte, die eine Exponentialfunktion mit der Basis 2.
Aber es ist das zweite Beispiel (wo wir sind scaling-Bereich), dass eine Verdoppelung erscheint, um den Kreis doppelt so groß für das Auge. Wenn wir also wollen, einen Kreis zu erscheinen ein Faktor
n
größer wir würden vergrößern Sie den Bereich um einen Faktorn
nicht der radius, so dass die scheinbare Größe skaliert Linear mit der Fläche.InformationsquelleAutor der Antwort Dan
Weil andere Antworten, die hier behaupten, dass
s
bezeichnet den Bereich der Markierung, ich bin das hinzufügen dieser Antwort auf clearify, dass dies nicht unbedingt der Fall.Größe im Punkte^2
Dem argument
s
implt.scatter
bezeichnet diemarkersize**2
. Wie die Dokumentation sagtDies kann wörtlich genommen werden. Um eine Markierung, die x-Punkte groß ist, müssen Sie Platz, Nummer und geben Sie es an die
s
argument.Also die Beziehung zwischen den markersize einer Linie plot und scatter-argument Größe ist das Quadrat. Um eine scatter-marker von der gleichen Größe wie ein plot-marker der Größe 10 Punkte, die Sie würde somit
scatter( .., s=100)
.Anschluss an die "Umgebung"
Warum also tun die anderen Antworten und auch die Dokumentation darüber sprechen, "Bereich", wenn es um die
s
parameter?Natürlich die Einheiten Punkte**2-Bereich-Einheiten.
marker="s"
im Bereich des marker ist ja auch direkt der Wert ders
parameter.area = pi/4*s
.In allen Fällen jedoch, in den Bereich der Markierung ist proportional zur
s
parameter. Dies ist die motivation, nennen es "Gebiet", obwohl es in den meisten Fällen ist es nicht wirklich.Unter Angabe der Größe des scatter-Marker im Sinne einer Menge, die proportional zur Fläche der marker macht in so weit Sinn, wie es ist der Bereich der Marke, die wahrgenommen wird, wenn beim Vergleich von verschiedenen patches, statt dessen Seitenlänge oder Durchmesser. I. e. die Verdoppelung der zugrunde liegende Menge ist die doppelte Fläche des markers.
Was sind Punkte?
So weit die Antwort auf das, was der Größe eines scatter-marker bedeutet, wird in Einheiten von Punkten. Punkte werden Häufig verwendet, in der Typografie, in denen Schriften sind in Punkten angegeben. Auch linewidths wird oft in Punkten angegeben. Die standard-Größe der Punkte in matplotlib ist 72 Punkte pro inch (ppi) - 1 Punkt ist also 1/72 Zoll.
Könnte es nützlich sein zu können, geben Sie die Größen in Pixel statt Punkten. Wenn die Abbildung 72 dpi ist auch ein Punkt ein pixel. Wenn die Figur dpi ist anders (matplotlib Standard ist
fig.dpi=100
),Während das scatter-marker, Größe in Punkten würde daher schauen Sie für verschiedene Abbildung dpi, man könnte ein 10 mal 10 Pixel^2 marker, die würden immer die gleiche Anzahl von Pixeln abgedeckt:
InformationsquelleAutor der Antwort ImportanceOfBeingErnest
Es ist die Bereich der marker. Ich meine, ist: Sie haben
s1 = 1000
und danns2 = 4000
das Verhältnis zwischen dem radius des jeweiligen Kreises ist:r_s2 = 2 * r_s1
. Finden Sie unter den folgenden plot:Ich hatte die gleichen Zweifel, als ich sah die post, so habe ich dieses Beispiel dann habe ich ein Lineal auf dem Bildschirm Messen Sie die Radien.
InformationsquelleAutor der Antwort Joaquin
Können Sie markersize zum angeben der Größe des Kreises im plot-Methode
Vom hier
InformationsquelleAutor der Antwort zhaoqing
Ich auch versucht, auf "scatter" ursprünglich für diesen Zweck. Nach ein bisschen Verschwendete Zeit - ich ließ mich auf die folgende Lösung.
Diese basiert auf eine Antwort zu diese Frage
InformationsquelleAutor der Antwort Ike
Wenn die Größe der Kreise entspricht dem Quadrat der parameter in
s=parameter
weisen dann eine Quadratwurzel für jedes element, das Sie Anhängen, um Ihre Größe-array wie dieses:s=[1, 1.414, 1.73, 2.0, 2.24]
so, dass, wenn es dauert, bis diese Werte und gibt Sie zurück, die Ihre relative Größe zu erhöhen, wird die Quadratwurzel aus dem Quadrat, das gibt eine lineare progression.Wenn ich das Quadrat jeder wie es bekommt die Ausgabe der plot:
output=[1, 2, 3, 4, 5]
. Try-Liste interpretation:s=[numpy.sqrt(i) for i in s]
InformationsquelleAutor der Antwort user34028