Python: parcelle liste de tuples
J'ai les données suivantes. Je voudrais utiliser python ou gnuplot pour tracer les données. Les tuples sont de la forme (x,y). L'axe Y doit être un journal de l'axe. I. E. log(y). Un diagramme de dispersion ou de la ligne de la parcelle serait l'idéal.
Comment cela peut-il être fait?
[(0, 6.0705199999997801e-08), (1, 2.1015700100300739e-08),
(2, 7.6280656623374823e-09), (3, 5.7348209304555086e-09),
(4, 3.6812203579604238e-09), (5, 4.1572516753310418e-09)]
Vous devez vous connecter pour publier un commentaire.
Si je reçois votre question correctement, vous pouvez faire quelque chose comme ça.
qui vous donnerait quelque chose comme
Ou comme une ligne de la parcelle,
MODIFIER - Si vous souhaitez ajouter un titre et des étiquettes de l'axe, vous pourriez faire quelque chose comme
ce qui vous permettrait d'
plt.semilogy()
au lieu deplt.plot()
.zip(*)
construire a été une nouvelle pour moi.*
faire?Dans matplotlib ce serait:
qui donnerait:
plt.yscale('log')
pour pyplot mode interactif.Que d'autres ont répondu,
scatter()
ouplot()
va générer le tracé que vous voulez. Je suggère deux améliorations des réponses qui sont déjà ici:Utiliser numpy pour créer la coordonnée x de la liste et coordonnée de la liste. Travailler avec de grands ensembles de données est plus rapide dans numpy que l'utilisation de l'itération en Python suggéré dans d'autres réponses.
Utilisation pyplot pour appliquer l'échelle logarithmique plutôt que d'opérer directement sur les données, sauf si vous voulez vraiment avoir les journaux.
J'ai aussi utilisé
ax.set_xlim(1, 6)
etax.set_ylim(.1, 1e6)
pour faire joli.J'ai utilisé l'interface orientée objet pour matplotlib. Parce qu'il offre une plus grande flexibilité et explicite de la clarté à l'aide de noms d'objets créés, l'OO interface est préféré au cours de la interactives basées sur l'état de l'interface.
Vous pouvez également utiliser zip