如何在matplotlib上以对数标度可视化值?

时间:2012-04-02 15:40:51

标签: python matplotlib numeric

我有很小的差异,如... 0.000001。我想以对数刻度将它们可视化。我想知道如何在matplotlib中做到这一点。

非常感谢

4 个答案:

答案 0 :(得分:17)

http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.axis

只需添加关键字参数log=True

即可

或者,在一个例子中:

from matplotlib import pyplot
import math
pyplot.plot([x for x in range(100)],[math.exp(y) for y in range(100)] )
pyplot.xlabel('arbitrary')
pyplot.ylabel('arbitrary')
pyplot.title('arbitrary')

#pyplot.xscale('log')
pyplot.yscale('log')

pyplot.show()

enter image description here

答案 1 :(得分:3)

由于所有其他答案仅提及全局pyplot.xscale("log")方法:您还可以为每个轴设置它,但语法为:

ax.set_yscale("log")

答案 2 :(得分:2)

您可以使用以下代码:

import matplotlib.pyplot
# to set x-axis to logscale
matplotlib.pyplot.xscale('log')
# to set y-axis to logscale
matplotlib.pyplot.yscale('log')

答案 3 :(得分:2)

您可以使用plot

而不是semilogy
import numpy as npy
import matplotlib.pyplot as plt
x=npy.array([i/100. for i in range(100)])
y=npy.exp(20*x)
plt.semilogy(x, y)
plt.show()

但我不完全确定您希望使用对数刻度获得什么。当你说“小差异”时,你的意思是值可能是193.000001和193.000002吗?如果是这样,可能有助于减去193。