gpt4 book ai didi

python - 通过 matplotlib 中的一个因子更改绘图比例

转载 作者:IT老高 更新时间:2023-10-28 22:16:31 25 4
gpt4 key购买 nike

我正在用 python 创建一个情节。有没有办法按一个因子重新缩放轴? yscalexscale 命令只允许我关闭对数刻度。

编辑:
例如。如果我有一个 x 比例从 1 nm 到 50 nm 的图,则 x 比例范围从 1x10^(-9) 到 50x10^(-9),我希望它从1 到 50。因此,我希望绘图函数将放置在绘图上的 x 值除以 10^(-9)

最佳答案

您已经注意到,xscaleyscale 不支持简单的线性重新缩放(很遗憾)。作为 Hooked 答案的替代方案,您可以像这样欺骗标签,而不是弄乱数据:

ticks = ticker.FuncFormatter(lambda x, pos: '{0:g}'.format(x*scale))
ax.xaxis.set_major_formatter(ticks)

显示 x 和 y 缩放的完整示例:

import numpy as np
import pylab as plt
import matplotlib.ticker as ticker

# Generate data
x = np.linspace(0, 1e-9)
y = 1e3*np.sin(2*np.pi*x/1e-9) # one period, 1k amplitude

# setup figures
fig = plt.figure()
ax1 = fig.add_subplot(121)
ax2 = fig.add_subplot(122)
# plot two identical plots
ax1.plot(x, y)
ax2.plot(x, y)

# Change only ax2
scale_x = 1e-9
scale_y = 1e3
ticks_x = ticker.FuncFormatter(lambda x, pos: '{0:g}'.format(x/scale_x))
ax2.xaxis.set_major_formatter(ticks_x)

ticks_y = ticker.FuncFormatter(lambda x, pos: '{0:g}'.format(x/scale_y))
ax2.yaxis.set_major_formatter(ticks_y)

ax1.set_xlabel("meters")
ax1.set_ylabel('volt')
ax2.set_xlabel("nanometers")
ax2.set_ylabel('kilovolt')

plt.show()

最后我得到了一张照片的学分:

Left: ax1 no scaling, right: ax2 y axis scaled to kilo and x axis scaled to nano

请注意,如果您像我一样拥有 text.usetex: true,则可能需要将标签括在 $ 中,如下所示:'$ {0:g}$'.

关于python - 通过 matplotlib 中的一个因子更改绘图比例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10171618/

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