Ich versuche, ein Streudiagramm zu erstellen und Datenpunkte mit verschiedenen Nummern aus einer Liste zu versehen. So möchte ich zum Beispiel y
vs zeichnen x
und mit entsprechenden Zahlen von kommentieren n
.
y = [2.56422, 3.77284, 3.52623, 3.51468, 3.02199]
z = [0.15, 0.3, 0.45, 0.6, 0.75]
n = [58, 651, 393, 203, 123]
ax = fig.add_subplot(111)
ax1.scatter(z, y, fmt='o')
Irgendwelche Ideen?
python
matplotlib
text
scatter-plot
annotate
Labibah
quelle
quelle
Antworten:
Mir ist keine Plotmethode bekannt, die Arrays oder Listen verwendet, aber Sie können sie verwenden,
annotate()
während Sie über die Werte in iterierenn
.Es gibt viele Formatierungsoptionen für
annotate()
, siehe die matplotlib-Website:quelle
regplot
ohne zu viel zu stören.KeyError
- also wird wohl eindict()
Objekt erwartet? Gibt es eine andere Möglichkeit , die Daten unter Verwendung von beschriftenenumerate
,annotate
und Pandas Datenrahmen?for row in df.iterrows():
und dann mitrow['text'], row['x-coord']
usw. auf die Werte zugreifen . Wenn Sie eine separate Frage stellen, werde ich sie mir ansehen.In früheren Versionen als matplotlib 2.0
ax.scatter
ist es nicht erforderlich, Text ohne Markierungen zu zeichnen. In Version 2.0 müssen Sieax.scatter
den richtigen Bereich und die richtigen Markierungen für Text festlegen.Und in diesem Link finden Sie ein Beispiel in 3D.
quelle
plt.figure(figsize=(20,10))
funktionieren nicht wie erwartet, da das Aufrufen dieses Codes die Größe des Bildes nicht ändert. Ich freue mich auf Ihre Hilfe. Vielen Dank!Falls jemand versucht, die oben genannten Lösungen auf eine .scatter () anstelle einer .subplot () anzuwenden,
Ich habe versucht, den folgenden Code auszuführen
Es ist jedoch ein Fehler aufgetreten, der besagt, dass ein nicht iterierbares PathCollection-Objekt nicht entpackt werden kann. Der Fehler zeigt speziell auf die Codeline fig, ax = plt.scatter (z, y).
Ich habe den Fehler schließlich mit dem folgenden Code behoben
Ich hatte nicht erwartet, dass es einen Unterschied zwischen .scatter () und .subplot () gibt, den ich besser hätte kennen sollen.
quelle
Sie können auch verwenden
pyplot.text
(siehe hier ).quelle
Python 3.6+:
quelle
Als Einzeiler mit Listenverständnis und Numpy:
[ax.annotate(x[0], (x[1], x[2])) for x in np.array([n,z,y]).T]
Das Setup ist ebenso wie Rutgers Antwort.
quelle
Ich würde gerne hinzufügen, dass Sie sogar Pfeile / Textfelder verwenden können, um die Beschriftungen zu kommentieren. Folgendes meine ich:
Welches wird die folgende Grafik erzeugen:
quelle