Python(和matplotlib)新手来自R,所以我希望这个问题不是太愚蠢。我正在尝试在自然对数范围内制作loglog图。但经过一些谷歌搜索后,我无法以某种方式弄清楚如何强制pyplot在轴上使用基本e标度。我目前的代码:
import matplotlib.pyplot as pyplot
import math
e = math.exp(1)
pyplot.loglog(range(1,len(degrees)+1),degrees,'o',basex=e,basey=e)
degrees
是range(1,len(degrees)+1)
的每个值的计数向量。由于某种原因,当我运行此代码时,pyplot不断给我一个在轴上具有2的幂的图。我觉得这应该很容易,但我很难过......
非常感谢任何建议!
答案 0 :(得分:9)
使用plt.loglog
进行绘图时,您可以传递关键字参数basex
和basey
,如下所示。
从numpy开始,您可以e
获得numpy.e
常数(如果np.e
,则为import numpy as np
)
import numpy as np
import matplotlib.pyplot as plt
# Generate some data.
x = np.linspace(0, 2, 1000)
y = x**np.e
plt.loglog(x,y, basex=np.e, basey=np.e)
plt.show()
此外,如果您想看漂亮的刻度线,可以使用matplotlib.ticker
选择刻度线的格式,下面给出了一个例子。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as mtick
x = np.linspace(1, 4, 1000)
y = x**3
fig, ax = plt.subplots()
ax.loglog(x,y, basex=np.e, basey=np.e)
def ticks(y, pos):
return r'$e^{:.0f}$'.format(np.log(y))
ax.xaxis.set_major_formatter(mtick.FuncFormatter(ticks))
ax.yaxis.set_major_formatter(mtick.FuncFormatter(ticks))
plt.show()
答案 1 :(得分:0)
它也适用于semilogx和semilogy以在e中显示它们并且也改变它们的名字。
import matplotlib.ticker as mtick
fig, ax = plt.subplots()
def ticks(y, pos):
return r'$e^{:.0f}$'.format(np.log(y))
plt.semilogy(Time_Series, California_Pervalence ,'gray', basey=np.e )
ax.yaxis.set_major_formatter(mtick.FuncFormatter(ticks))
plt.show()