首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pyplot:以e为基的loglog()

pyplot:以e为基的loglog()
EN

Stack Overflow用户
提问于 2014-04-26 23:17:04
回答 2查看 34.5K关注 0票数 10

Python (和matplotlib)新手来自R,所以我希望这个问题不会太愚蠢。我正在尝试在自然对数尺度上绘制对数图。但是经过一些谷歌搜索后,我想不出如何强制pyplot在轴上使用基数e标度。我目前拥有的代码如下:

代码语言:javascript
复制
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的幂的图。我觉得这应该很简单,但我被难住了...

任何建议都是非常感谢的!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-26 23:21:21

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

从numpy中,您可以使用numpy.e获取e常量(如果使用import numpy as np,则为np.e )

代码语言:javascript
复制
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来选择你的记号的格式,下面给出了一个例子。

代码语言:javascript
复制
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()

票数 15
EN

Stack Overflow用户

发布于 2017-10-17 04:20:36

它还可以在semilogx和semilogy中显示它们,还可以更改它们的名称。

代码语言:javascript
复制
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()

看一下这张图片。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23312803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档