Matplotlib最小刻度距离

2024-05-26 22:57:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我用matplotlib绘制数据,它在大量周期内具有不同的振幅。在某些时期几乎没有任何振幅(例如0.1的数据分辨率为0.1)。因此,matplotlib以比数据的实际分辨率更精细的分辨率创建记号。在

有没有办法定义刻度之间的最小距离?在

由于数据振幅可能相当高,我不能对所有绘图使用相同的固定距离。我希望自动选择刻度,除了句点以外,它们比0.1更细。在

以下是低振幅周期的MWE,说明了问题:

from matplotlib import pyplot as plt
import matplotlib.ticker as mtick
x = range(10)
y = [0.1,0.1,0.1,0.1,0.1,0.1,0.2,0.1,0.1,0.1]
fig,ax = plt.subplots()
ax.plot(x,y)

因此:

enter image description here

在本例中,我只希望刻度为0.1和0.2。在


Tags: 数据import距离定义matplotlibas绘制分辨率
1条回答
网友
1楼 · 发布于 2024-05-26 22:57:48

你可以计算最小值和最大值之间的差值。如果该差值小于某个数字,则创建间距为0.1的记号列表,否则创建间距为1的记号。在

例如:

x = range(10)
y = [0.1,0.1,0.1,0.1,0.1,0.1,0.2,0.1,0.1,0.1]

diff = max(y) - min(y)
if diff < 2:
    ticks = np.arange(min(y), max(y)+0.05, 0.1)
else:
    ticks = np.arange(min(y), max(y)+0.5, 1)

fig,ax = plt.subplots()
ax.plot(x,y)
ax.set_yticks(ticks)

会给出:

enter image description here

但是使用范围更大的y数据:

^{2}$

给出:

enter image description here

相关问题 更多 >

    热门问题