首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python Plot:如何将轴上的刻度表示为幂?

Python Plot:如何将轴上的刻度表示为幂?
EN

Stack Overflow用户
提问于 2016-04-07 23:01:40
回答 2查看 5.3K关注 0票数 2

我使用matplot库在python中处理绘图。我要生成的数字非常大,所以轴上的刻度也是很大的数字,占用了很多空间。我试图将它们表示为一个异能(例如,我希望有一个100000000,而不是10^8)。我使用了command:ax.ticklabel_format(style='sci', axis='x', scilimits=(0,4)),但是这个命令只创建了如下内容

有没有其他的解决方案可以让绘图的刻度为:1x10^4,2x10^4,等等,或者在标签刻度的末尾写入值1e4作为10^4?

EN

回答 2

Stack Overflow用户

发布于 2016-04-08 00:36:14

您可以使用matplotlib.ticker模块,并将ax.xaxis.set_major_formatter设置为FuncFormatter

例如:

代码语言:javascript
运行
复制
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import numpy as np

plt.rcParams['text.usetex'] = True

fig,ax = plt.subplots(1)

x = y = np.arange(0,1.1e4,1e3)
ax.plot(x,y)

def myticks(x,pos):

    if x == 0: return "$0$"

    exponent = int(np.log10(x))
    coeff = x/10**exponent

    return r"${:2.0f} \times 10^{{ {:2d} }}$".format(coeff,exponent)

ax.xaxis.set_major_formatter(ticker.FuncFormatter(myticks))

plt.show()

注意,这使用LaTeX格式化(text.usetex = True)在刻度标签中呈现指数。还要注意区分LaTeX大括号和python格式字符串大括号所需的双花括号。

票数 6
EN

Stack Overflow用户

发布于 2016-04-08 00:37:25

可能有更好的解决方案,但是如果您知道每个xtick的值,也可以手动命名它们。下面是一个示例:http://matplotlib.org/examples/ticks_and_spines/ticklabels_demo_rotation.html

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

https://stackoverflow.com/questions/36480077

复制
相关文章

相似问题

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