Matplotlib / Pylab - 设置对数刻度后,绘图的一部分消失

时间:2013-07-15 23:41:59

标签: python graph matplotlib plot

我有一个小代码,用以下代码生成以下图片:

代码1:

hist, rhist = np.histogram(r, bins=40, range=(0, 0.25))
hist = -hist/np.trapz(rhist[:-1],hist)
plt.plot(rhist[:-1], hist)

代码1的输出: enter image description here

然后我尝试将绘图设置为具有对数Y轴,以便我可以更清楚地识别小峰。这就是结果。

代码2:

hist, rhist = np.histogram(r, bins=40, range=(0, 0.25))
hist = -hist/np.trapz(rhist[:-1],hist)
plt.semilogy(rhist[:-1], hist)

代码2的输出: enter image description here

如你所见,我的部分情节消失了。有40个箱子,但我可以在新的地块中只计算大约15个。任何帮助将不胜感激。我正在使用最新版本的Enthought Canopy用于学术用途。即

更新:我确实发现了一个类似的问题here,旧的,死的,没有答案的。

3 个答案:

答案 0 :(得分:1)

我很确定这不会绘制这些值,因为它们是零。

Log(0)= -Infinity。

绘制图表会让你的图表看起来很垃圾......

答案 1 :(得分:1)

在您的绘图结束时发出plt.yscale('symlog')。有关'symlog'的说明,请参阅here

答案 2 :(得分:0)

一个常见的视觉技巧在日志范围内“显示”零是使用非常小的值:

plt.semilogy(rhist[:-1], hist+1e-6)

在这种情况下,要注意正确解释情节。