gpt4 book ai didi

Python Numpy 2D plot 设置自动缩放的 y-tics 总数

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

我想限制二维绘图中 y 轴上的抽动总数。在提供的示例图像中,您可以看到 F_X 图总共有 6 个抽动点 (0,0.2,0.4,0.6,0.8,1),而 F_Y 图有 8 个。有没有办法让轴自动缩放,但固定总抽动数,因为在我的示例中抽动数大于 6 的图看起来太忙了?

enter image description here

最佳答案

ax.locator_params(axis='y', nbins=num)是最简单的方法。

nbins 将为每个轴设置 最大 bin 数(即刻度线之间的间隔)。仍会选择“偶数”数字,但此值控制轴上刻度的密度。新轴的默认值为 9(换句话说,最多 10 个刻度/刻度标签)。

例如,让我们设置一些默认情况下看起来很忙的东西:

import matplotlib.pyplot as plt
import numpy as np
np.random.seed(1977)

# Generate some data with different ranges
x = np.linspace(0, 8.8, 1000)
ydata = np.random.normal(0, 1, (4, x.size)).cumsum(axis=1)
ydata *= np.array([1e-3, 1e3, 10, 1e-2])[:,None]

fig, axes = plt.subplots(nrows=4)
for y, ax in zip(ydata, axes):
ax.plot(x, y, color='salmon')
plt.show()

enter image description here

哎呀!!不太好!让我们看看是否可以做得更好:

fig, axes = plt.subplots(nrows=4)
for y, ax in zip(ydata, axes):
ax.plot(x, y, color='salmon')
ax.locator_params(axis='y', nbins=5)
plt.show()

enter image description here

到达那里,但仍然有点忙。我们可以进一步减少 nbins,但我们很快就会几乎没有滴答声结束。相反,我喜欢使用的一个技巧是从轴上“修剪”第一个和最后一个刻度。这也可以通过 locator_params 控制:

fig, axes = plt.subplots(nrows=4)
for y, ax in zip(ydata, axes):
ax.plot(x, y, color='salmon')
ax.locator_params(axis='y', nbins=5, prune='both')
plt.show()

enter image description here

对于您正在制作的绘图类型,当与共享 x 轴结合使用时,这种“修剪”会更加有效。这篇文章的主要作用是关闭一些 x-ticklabels。然而,这也将链接所有轴的交互式缩放和平移,以便共享 x 范围:

fig, axes = plt.subplots(nrows=4, sharex=True)
for y, ax in zip(ydata, axes):
ax.plot(x, y, color='salmon')
ax.locator_params(axis='y', nbins=5, prune='both')
plt.show()

enter image description here

现在我们可以让事情更紧密一些:

fig, axes = plt.subplots(nrows=4, sharex=True)
for y, ax in zip(ydata, axes):
ax.plot(x, y, color='salmon')
ax.locator_params(axis='y', nbins=5, prune='both')

fig.subplots_adjust(hspace=0)
plt.show()

enter image description here

最后,在这种特殊情况下,您还可以考虑使用 ax.margins(...)在 y 方向上添加一些填充并强制在 x 方向上“严格”缩放数据范围。

fig, axes = plt.subplots(nrows=4, sharex=True)
for y, ax in zip(ydata, axes):
ax.plot(x, y, color='salmon')
ax.margins(x=0, y=0.05)
ax.locator_params(axis='y', nbins=5, prune='both')

fig.subplots_adjust(hspace=0)
plt.show()

enter image description here

关于Python Numpy 2D plot 设置自动缩放的 y-tics 总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32039004/

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