【发布时间】:2014-12-18 13:40:48
【问题描述】:
如何使用等高线的 symlog(对称对数)比例创建等高线图。即显示负值和正值的对数刻度。
一种可能性是解决这个例子:
http://matplotlib.org/examples/pylab_examples/contourf_log.html
这给出了对数刻度的配方:
from matplotlib import pyplot, ticker
cs = pyplot.contourf(X, Y, z, locator=ticker.LogLocator())
但是,这不允许负值。有一个ticker.SymmetricalLogLocator(),这可能是解决方案,但它似乎没有太多文档。
编辑:
为了澄清(因为在对数刻度上请求负值可能听起来很荒谬),我想要的与 matplotlib 轴上提供的“symlog”刻度相同。下图(取自another stack exchange post)在 x 轴上显示符号日志。它是一个“对数”比例,但以一种对查看者来说很清楚的方式处理负值。
我想要相同的缩放比例,但对于轮廓或轮廓上的色阶。
【问题讨论】:
-
“负值”是什么意思?数字
-
当然,所以对于负值,您需要 -1*log(abs(x)),其中 x 是对数。这在 matplotlib 中被称为 1D 轴的“symlog”(对称日志)。见:stackoverflow.com/questions/3305865/…
-
啊哈,感谢您的澄清。您提到的
SymmetricalLogLocator的源代码可以在ticker.py中找到,并且从那里的代码 cmets 我相信它应该可以满足您的需求。看看它,我觉得你可能已经回答了你自己的问题。
标签: python python-2.7 matplotlib contour contourf