这个问题与that one高度相关。
我正在尝试绘制x轴为
的图形 [0] + [2**(x-4) for x in xrange(8)]
另一个问题的答案允许matplotlib具有[0, 2**(0), 2**(1), 2**(2), 2**(3)]
的轴,但不会增加负幂。
基本上,我想要一个2**(-5)
的另一点的对数刻度图(放置在x=0
将为水平的位置)。
有什么想法吗?
答案 0 :(得分:1)
您可以使用matplotlib的loglog
对其进行绘制。这是一个基本示例:
import numpy as np
import matplotlib.pyplot as plt
x = np.array([0] + [2**(x-4) for x in range(8)])
f = lambda x: 10**x
plt.loglog(x, f(x), basex=2, basey=10)
如您所见,您可以分别传递x和y基数,它也给出2**(-1)...
以下是示例图片:
我不知道我是否理解您问题的第二部分。
编辑,我想我现在可能会明白。由于不可能在对数刻度上设置0,因此这是一种符号方法:
在您的比例尺上,x轴上的最小数字为2**(-4)
,因此我将2**(-5)
用作符号零,并相应地重命名了刻度。这是通过xticks
完成的:
plt.xticks([2**i for i in range(-5,4)], [r"0"] + [r"$2^{%d}$" %(int(i)) for i in range(-4,4)])
第一个参数[2**i for i in range(-5,4)]
创建刻度线的位置,第二个参数创建标签的位置。
现在看起来像这样:
请记住:这里的“零”实际上是2**(-5)
!