2017-10-18 12 views
0

J'ai trouvé quelques solutions proches de cela, mais je n'arrive toujours pas à étiqueter mes axes correctement. Il me manque quelque chose de petit.Conserver la mise à l'échelle linéaire de l'axe des y lors du traçage des données du journal dans matplotlib

J'ai une courbe de décroissance radioactive à tracer en ligne droite.

J'ai 2 listes de données, et je tracer en utilisant scatter(hours,np.log(activity),color='red')

l'axe y est comme np.log (activité) comme prévu, mais je voudrais faire juste une activité tout en maintenant le tracé linéaire.

en utilisant a.yaxis.set_major_formatter(ticker.FormatStrFormatter("%d")) Je peux changer les étiquettes de tiques à tout ce que je veux mais je ne peux pas assigner une liste aux étiquettes de graduation. si je remplace% d par activity [0] par exemple, alors toutes les ticks prennent cette valeur.

J'espère que c'est clair ici ce que j'essaie de faire.

voir ici parcelle

Tout ce que je veux faire est de multiplier l'axe des y tiques par np.exp (y-tiques)

acclamations

Répondre

1

Je tracer scatter(hours, activity) , puis ax.set_yscale('log') pour l'obtenir sur une échelle logarithmique, et enfin ax.set_major_formatter(ScalarFormatter()) pour afficher les graduations en tant que nombres normaux (la notation par défaut est la notation scientifique).

Si vous avez vraiment à tracer log(activity) (à des fins de montage ou quelque chose), la réponse à votre question initiale:

ax.yaxis.set_major_formatter(FuncFormatter(lambda y, pos: "%.3f"%(np.exp(y)))) 

voir https://matplotlib.org/api/ticker_api.html#matplotlib.ticker.FuncFormatter

+0

Votre premier point a été ma méthode originale, mais l'autre L'ajustement im doing ne s'affiche donc pas correctement. l'axe de l'échelle logarithmique le raccord linéaire. Le deuxième point était la solution que je cherchais, Tyvm! – PatfordS

+0

Mon approche dans cette situation est généralement de faire l'ajustement linéaire aux données du journal, puis tracer l'ajustement comme 'exp (m * x + b)' sur le tracé à l'échelle logarithmique des données d'origine. Heureux cette autre solution fonctionne pour vous si! –