在日志中设置yscale和在日志中设置y变量有什么区别?

时间:2014-08-04 15:03:47

标签: python matplotlib axes

我想知道之间有什么区别:

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()

这会给enter image description here

然后我们使用:

ax.plot(a,np.log10(b),'-o')

我们得到enter image description here

1 个答案:

答案 0 :(得分:2)

您在第一张和第二张图中给出了不同的数据。一旦转变,另一个没有。无论轴的比例如何,坐标“(1,100)”将始终为“(1,100)”,无论其标记为“(1,100)”还是“(1,10 ^ 2)”。一个使用对数标度不转换数据,但是当某些点很远时,使用更可读的图形。

通过自己应用日志,您可以转换数据。然后在你的第二张图中,你必须解释自己“2”实际上意味着“10 ^ 2”。

除此之外,唯一的视觉差异只是y轴的刻度,如果您非常耐心,也可以“手动”更改为对数刻度。 我建议改变轴上的比例而不是数据,因为首先它可能会自动处理负/零情况,其次当你想添加诸如箭头等东西来指向图中的位置时,祝你好运你自己。