gpt4 book ai didi

python - matplotlib - 如何使用 MaxNLocator 并指定必须位于 Axis 中的数字?

转载 作者:太空宇宙 更新时间:2023-11-03 17:04:49 26 4
gpt4 key购买 nike

我确实对 python 中的 matplotlib 有疑问。我创建了不同的图形,其中每个图形都应具有相同的高度,以便将它们并排打印在出版物/海报中。

如果 y Axis 的最顶部有标签,则会缩小绘图框的高度。所以我使用 MaxNLocator 删除上下 y 刻度。在某些图中,我希望将 1.0 作为 y Axis 上的数字,因为我已经标准化了数据。所以我需要一个解决方案,在这些情况下扩展 y Axis 并确保 1.0 是 y-Tick,但不会使用ight_layout() 破坏图形的大小。

这是一个最小的例子:

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

x = np.linspace(0,1,num=11)
y = np.linspace(1,.42,num=11)

fig,axs = plt.subplots(1,1)
axs.plot(x,y)

locator=MaxNLocator(prune='both',nbins=5)
axs.yaxis.set_major_locator(locator)

plt.tight_layout()

fig.show()

这是一个link到 example-pdf,它显示了上框线高度的问题。

我尝试使用 adjustment_subplots() 但这对我来说没有用,因为我改变图形的大小并希望始终保持相同的字体大小,这会改变边距。

问题是:

如何使用 MaxNLocator 并指定 y Axis 上的数字?

希望大家能给点建议。

您好,莱南

最佳答案

假设您事先知道页面上的 1 行中有多少个绘图,解决此问题的一种方法是将所有这些绘图放入一个图形中 - matplotlib 将确保它们是在 Axis 上对齐:

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

x = np.linspace(0, 1, num=11)
y = np.linspace(1, .42, num=11)

fig, (ax1, ax2) = plt.subplots(1,2, figsize=(8,3), gridspec_kw={'wspace':.2})
ax1.plot(x,y)
ax2.plot(x,y)

locator=MaxNLocator(prune='both', nbins=5)
ax1.yaxis.set_major_locator(locator)

# You don't need to use tight_layout and using it might give an error
# plt.tight_layout()

fig.show()

enter image description here

关于python - matplotlib - 如何使用 MaxNLocator 并指定必须位于 Axis 中的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34678130/

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