在matplotlib中绘制日志数据时,保留线性y轴缩放

时间:2017-10-18 00:43:04

标签: python matplotlib plot axis

我已经找到了一些接近此的解决方案,但我仍然无法正确标记我的轴。我错过了一些小事。

我将放射性衰减曲线绘制成直线。

我有2个数据列表,我使用scatter(hours,np.log(activity),color='red')

绘图

y轴按预期出现为np.log(活动),但我希望在保持线性图的同时使其成为活动。

使用a.yaxis.set_major_formatter(ticker.FormatStrFormatter("%d"))我可以将刻度标签更改为我想要的任何内容,但我无法为刻度标签指定列表。如果我用活动[0]替换%d,那么所有滴答都取该值。

我希望在这里明白我想做什么。

见这里的情节

我想做的就是将y轴刻度乘以np.exp(y-ticks)

欢呼声

1 个答案:

答案 0 :(得分:1)

我会绘制SKAction.sequence,然后scatter(hours, activity)来绘制对数刻度,最后ax.set_yscale('log')将刻度标签显示为常规数字(默认为科学记数法)。

如果您真的必须绘制ax.set_major_formatter(ScalarFormatter())(出于适合目的或其他目的),原始问题的答案是:

log(activity)

请参阅https://matplotlib.org/api/ticker_api.html#matplotlib.ticker.FuncFormatter