450 Stimmen

Streudiagramm mit unterschiedlichem Text bei jedem Datenpunkt

Ich versuche, ein Streudiagramm zu erstellen und Datenpunkte mit verschiedenen Zahlen aus einer Liste zu beschriften. Ich möchte also zum Beispiel Folgendes darstellen y vs x und vermerken Sie die entsprechenden Nummern aus 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?

17voto

bigbounty Punkte 14652

Für eine begrenzte Anzahl von Werten ist Matplotlib gut geeignet. Aber wenn Sie viele Werte haben, beginnt die QuickInfo, sich mit anderen Datenpunkten zu überlappen. Aber bei begrenztem Platz kann man die Werte nicht ignorieren. Daher ist es besser, heraus- oder hineinzuzoomen.

Plotly verwenden

import plotly.express as px
import pandas as pd

df = px.data.tips()

df = px.data.gapminder().query("year==2007 and continent=='Americas'")

fig = px.scatter(df, x="gdpPercap", y="lifeExp", text="country", log_x=True, size_max=100, color="lifeExp")
fig.update_traces(textposition='top center')
fig.update_layout(title_text='Life Expectency', title_x=0.5)
fig.show()

enter image description here

14voto

palash Punkte 469

Python 3.6+:

coordinates = [('a',1,2), ('b',3,4), ('c',5,6)]
for x in coordinates: plt.annotate(x[0], (x[1], x[2]))

4voto

Uzzal Podder Punkte 2885

Dies könnte nützlich sein, wenn Sie individuell in verschiedenen Zeiten Anmerkungen machen müssen (ich meine, nicht in einer einzigen for-Schleife)

ax = plt.gca()
ax.annotate('your_lable', (x,y)) 

donde x y y sind die Ihre Zielkoordinate und der Typ ist float/int.

3voto

andor kesselman Punkte 1063

Als One-Liner unter Verwendung von List Comprehension und Numpy:

[ax.annotate(x[0], (x[1], x[2])) for x in np.array([n,z,y]).T]

Die Einrichtung entspricht der Antwort von Rutger.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X