Python (和matplotlib)新手来自R,所以我希望这个问题不会太愚蠢。我正在尝试在自然对数尺度上绘制对数图。但是经过一些谷歌搜索后,我想不出如何强制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的幂的图。我觉得这应该很简单,但我被难住了...
任何建议都是非常感谢的!
发布于 2014-04-26 23:21:21
使用plt.loglog绘图时,可以传递关键字参数basex和basey,如下所示。
从numpy中,您可以使用numpy.e获取e常量(如果使用import numpy as np,则为np.e )
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()

发布于 2017-10-17 04:20:36
它还可以在semilogx和semilogy中显示它们,还可以更改它们的名称。
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()看一下这张图片。

https://stackoverflow.com/questions/23312803
复制相似问题