该图应该显示时间差异,可以是负值也可以是正值。有些差异非常小,而有些差异非常大。
我可以缩放 x 轴,使分辨率在 x = 0 附近非常精细,而在远离 x = 0 的地方粗糙吗?是否可以有一个从 x = 0 向外的对数刻度?
编辑:
正如@Evert 所建议的,这为我解决了这个问题:
ax = gca()
...
ax.set_xscale("symlog")
并产生这个情节:
该图应该显示时间差异,可以是负值也可以是正值。有些差异非常小,而有些差异非常大。
我可以缩放 x 轴,使分辨率在 x = 0 附近非常精细,而在远离 x = 0 的地方粗糙吗?是否可以有一个从 x = 0 向外的对数刻度?
编辑:
正如@Evert 所建议的,这为我解决了这个问题:
ax = gca()
...
ax.set_xscale("symlog")
并产生这个情节:
您可以使用以下symlog
设置xscale()
: http: //matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.xscale
除了零附近的有限部分(可以使用更多关键字设置,请参阅文档)外,它以对数方式缩放(也在负侧):该部分是线性缩放的,从而避免了所有log(0)
问题。
有关示例,请参见此处。
我会制作两个子图:在右侧子图中绘制正时间,并在左侧子图中绘制 abs(负时间),并反转 x-axis。
是否可以有一个从 x = 0 向外的对数刻度?
不,因为对数图不显示零——当你接近 log-x 轴的“左端”时,你会在对数空间中达到负无穷大,所以你不能越过零到达真正的负值。你必须以某种方式消除零。