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)
Run Code Online (Sandbox Code Playgroud)
degrees每个值的计数向量在哪里range(1,len(degrees)+1).由于某种原因,当我运行此代码时,pyplot不断给我一个在轴上具有2的幂的图.我觉得这应该很容易,但我很难过......
任何意见是极大的赞赏!
使用时绘图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()
Run Code Online (Sandbox Code Playgroud)
此外,如果您想要漂亮的刻度线,您可以使用它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()
Run Code Online (Sandbox Code Playgroud)
