缩放matplotlib图,以便显示小/大的正/负差异

时间:2013-02-19 13:21:44

标签: python matplotlib plot ipython-notebook

enter image description here

该图应该显示时间差异,可以是负值和正值。有些差异非常小,而其他差异非常大。

我可以缩放x轴,使分辨率在x = 0附近非常精细,并且远离x = 0粗糙吗?是否有可能从x = 0开始向外对数刻度?

编辑:

根据@Evert的建议,这解决了我的问题:

ax = gca()
...
ax.set_xscale("symlog")

并产生这个情节:

enter image description here

2 个答案:

答案 0 :(得分:7)

您可以使用symloghttp://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.xscale

中的xscale()设置

它以对数方式(也在负面)进行缩放,除了零周围的有限部分(可以使用其他关键字设置,请参阅文档):该部分是线性缩放的,从而避免了所有log(0)个问题

有关示例,请参阅here

答案 1 :(得分:3)

我会制作两个子图:绘制右侧子图中的正时间,并在左侧子图中绘制abs(负时间),并使用reversed x-axis

  

是否有可能从x = 0向外输出对数刻度?

不,因为对数图不显示零 - 当你接近log-x轴的“左端”时,你会在日志空间中转到负无穷大,所以你不能越过零来得到真正的负面价值观。你不得不以某种方式削减零。