gpt4 book ai didi

python - 用科学坐标轴作图,改变有效数字的个数

转载 作者:太空狗 更新时间:2023-10-29 18:12:44 25 4
gpt4 key购买 nike

我在 matplotlib 中制作了以下图,其中使用了 plt.ticklabel_format(axis='y',style='sci',scilimits=(0,3))。这会产生一个 y 轴:

enter image description here

现在的问题是我希望 y 轴具有来自 [0, -2, -4, -6, -8, -12] 的刻度。我玩过 scilimits 但无济于事。

如何强制刻度只有一位有效数字且没有尾随零,并在需要时为 float ?

MWE 添加如下:

import matplotlib.pyplot as plt
import numpy as np

t = np.arange(0.0, 10000.0, 10.)
s = np.sin(np.pi*t)*np.exp(-t*0.0001)

fig, ax = plt.subplots()

ax.tick_params(axis='both', which='major')
plt.ticklabel_format(style='sci', axis='x', scilimits=(0,3))
plt.plot(t,s)

plt.show()

最佳答案

当我遇到这个问题时,我能想到的最好办法是使用自定义 FuncFormatter对于蜱虫。但是,我发现没有办法让它随轴一起显示比例(例如 1e5)。简单的解决方案是手动将其包含在刻度标签中。

很抱歉,如果这不能完全回答问题,但它可能足以作为问题的相对简单的解决方案:)

在 MWE 中,我的解决方案看起来有点像这样:

import matplotlib.pyplot as plt
from matplotlib.ticker import FuncFormatter
import numpy as np


def tickformat(x):
if int(x) == float(x):
return str(int(x))
else:
return str(x)


t = np.arange(0.0, 10000.0, 10.)
s = np.sin(np.pi*t)*np.exp(-t*0.0001)

fig, ax = plt.subplots()

ax.tick_params(axis='both', which='major')
plt.plot(t,s)

fmt = FuncFormatter(lambda x, pos: tickformat(x / 1e3))
ax.xaxis.set_major_formatter(fmt)

plt.xlabel('time ($s 10^3$)')

plt.show()

请注意,该示例操作的是 x 轴!

enter image description here

当然,这可以通过重新缩放数据来更简单地实现。但是,我假设您不想触摸数据而只想操纵轴。

关于python - 用科学坐标轴作图,改变有效数字的个数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34992685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com