我想知道之间有什么区别:
ax.set_yscale('log')
ax.plot(a,b)
和
ax.plot(a,np.log10(b))
在第一种情况下,我们只是将 yscale 设置为对数比例。
在第二种情况下,我们记录b
,即log10
中的y轴变量,然后绘制。
他们似乎都给出了不同的结果。我举了一个例子:
a = np.linspace(0,2,100)
b = np.cos(a)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_yscale('log')
ax.plot(a,b,'-o')
plt.show()
这会给
然后我们使用:
ax.plot(a,np.log10(b),'-o')
我们得到
答案 0 :(得分:2)
您在第一张和第二张图中给出了不同的数据。一旦转变,另一个没有。无论轴的比例如何,坐标“(1,100)”将始终为“(1,100)”,无论其标记为“(1,100)”还是“(1,10 ^ 2)”。一个使用对数标度不转换数据,但是当某些点很远时,使用更可读的图形。
通过自己应用日志,您可以转换数据。然后在你的第二张图中,你必须解释自己“2”实际上意味着“10 ^ 2”。
除此之外,唯一的视觉差异只是y轴的刻度,如果您非常耐心,也可以“手动”更改为对数刻度。 我建议改变轴上的比例而不是数据,因为首先它可能会自动处理负/零情况,其次当你想添加诸如箭头等东西来指向图中的位置时,祝你好运你自己。