2017-10-18 101 views
0

我发现了一些解决方案,但我仍无法正确标记我的坐标轴。我错过了一些小事。在matplotlib中绘制日志数据时保留线性y轴缩放比例

我有一个放射性衰减曲线绘制成一条直线。

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

y轴出来的np.log(活动)的预期,但我希望做它只是活动,同时保持线性图。

使用a.yaxis.set_major_formatter(ticker.FormatStrFormatter("%d"))我可以改变滴答标签为任何我想要的,但我不能指定一个列表滴答标签。如果我将%d替换为activity [0],则所有的tick都会采用该值。

我希望在这里明确什么即时通讯尝试做。

看到的情节在这里

所有我想要做的就是乘y轴蜱由np.exp(Y-蜱)

欢呼

回答

1

我会绘制scatter(hours, activity) ,然后ax.set_yscale('log')以日志为单位,最后ax.set_major_formatter(ScalarFormatter())将刻度标签显示为常规数字(默认为科学记数法)。

如果你真的要绘制log(activity)(用于安装目的或东西),回答你原来的问题是:

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

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

+0

你的第一点是我原来的方法,但是其他如果我正在进行装配,则无法正常显示。对数刻度轴会扰乱线性拟合。第二点是我寻找的解决方案,tyvm! – PatfordS

+0

我在这种情况下的做法通常是对日志数据进行线性拟合,然后在原始数据的对数坐标图上将拟合绘制为'exp(m * x + b)'。很高兴这个其他的解决方案适合你! –

相关问题