J'essaie de faire un nuage de points et d'annoter des points de données avec différents nombres à partir d'une liste. Ainsi, par exemple, je veux tracer y
vs x
et annoter avec les nombres correspondants de 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')
Des idées?
python
matplotlib
text
scatter-plot
annotate
Labibah
la source
la source
Réponses:
Je ne connais aucune méthode de traçage qui prend des tableaux ou des listes, mais vous pouvez utiliser
annotate()
tout en itérant les valeurs dansn
.Il existe de nombreuses options de formatage pour
annotate()
, voir le site Web de matplotlib:la source
regplot
sans trop de perturbations.KeyError
- donc je suppose qu'undict()
objet est attendu? Est - il une autre façon d'étiqueter les données à l' aideenumerate
,annotate
et une trame de données pandas?for row in df.iterrows():
, puis accéder aux valeurs avecrow['text'], row['x-coord']
etc. Si vous postez une question distincte, je vais y jeter un œil.Dans les versions antérieures à matplotlib 2.0, il
ax.scatter
n'est pas nécessaire de tracer du texte sans marqueurs. Dans la version 2.0, vous devrezax.scatter
définir la plage et les marqueurs appropriés pour le texte.Et dans ce lien, vous pouvez trouver un exemple en 3D.
la source
plt.figure(figsize=(20,10))
ne fonctionnent pas comme prévu, en ce sens que l'invocation de ce code ne change pas réellement la taille de l'image. Dans l'attente de votre aide. Merci!Dans le cas où quelqu'un essaie d'appliquer les solutions ci-dessus à un .scatter () au lieu d'un .subplot (),
J'ai essayé d'exécuter le code suivant
Mais il a rencontré des erreurs indiquant "impossible de décompresser l'objet PathCollection non itérable", l'erreur pointant spécifiquement sur la ligne de code fig, ax = plt.scatter (z, y)
J'ai finalement résolu l'erreur en utilisant le code suivant
Je ne m'attendais pas à ce qu'il y ait une différence entre .scatter () et .subplot () que j'aurais dû mieux connaître.
la source
Vous pouvez également utiliser
pyplot.text
(voir ici ).la source
Python 3.6+:
la source
En une ligne avec compréhension de liste et numpy:
[ax.annotate(x[0], (x[1], x[2])) for x in np.array([n,z,y]).T]
l'installation est idem à la réponse de Rutger.
la source
J'adorerais ajouter que vous pouvez même utiliser des flèches / zones de texte pour annoter les étiquettes. Voici ce que je veux dire:
Ce qui va générer le graphique suivant:
la source