pyplot:带有基数e的loglog()

时间:2014-04-26 15:17:04

标签: python matplotlib

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)

degreesrange(1,len(degrees)+1)的每个值的计数向量。由于某种原因,当我运行此代码时,pyplot不断给我一个在轴上具有2的幂的图。我觉得这应该很容易,但我很难过......

非常感谢任何建议!

2 个答案:

答案 0 :(得分:9)

使用plt.loglog进行绘图时,您可以传递关键字参数basexbasey,如下所示。

从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()

Plot

答案 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()

看一下图片。enter image description here