You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用Matplotlib设置ylim时出现多余无效ytick标签问题

嘿,我之前也遇到过这个一模一样的问题!当你用WaveletAnalysis绘制完小波功率谱后,再调用ax1.set_ylim(2,8)设置y轴范围,会出现重复的ytick标签,本质原因是:Wavelet库的绘图逻辑已经自动为y轴(对应小波尺度)设置了一组刻度,而set_ylim会触发Matplotlib自动生成另一组适配新范围的刻度,两者重叠就导致了双标签的问题。

下面给你两种靠谱的解决方案,附完整可复现的代码:

方法一:手动筛选原有刻度,避免自动生成新刻度

先获取Wavelet绘图后原有的y轴刻度,只保留在你设定的[2,8]范围内的刻度,再手动设置回去,这样就不会出现重复标签了:

import numpy as np
from wavelets import WaveletAnalysis
import matplotlib.pyplot as plt

# 归一化函数(保留你的原函数)
def normalize(data, a, b):
    return [(b-a)*(((x-data.min())/(data.max()-data.min())))+a for x in data]

# 创建完整示例数据(补全你没写完的time数组)
np.random.seed(420)
x = np.random.rand(23)
time = np.arange(len(x))  # 对应23个数据点的时间序列

# 小波分析计算
wa = WaveletAnalysis(x, time=time)

# 创建绘图对象
fig, ax1 = plt.subplots(figsize=(10,6))
power = wa.wavelet_power
levels = np.logspace(-1, 1, 100)
# 先绘制功率谱,此时Wavelet库已自动设置y轴刻度
contourf = ax1.contourf(time, wa.scales, power, levels=levels, cmap='viridis')

# 关键步骤:筛选原有刻度并手动设置
original_yticks = ax1.get_yticks()
# 只保留2到8之间的刻度
filtered_yticks = [tick for tick in original_yticks if 2 <= tick <= 8]
ax1.set_ylim(2, 8)
ax1.set_yticks(filtered_yticks)

# 添加颜色条并显示
plt.colorbar(contourf, ax=ax1, label='Wavelet Power')
plt.show()

方法二:先设置y轴范围再绘图

另一种更简洁的方式是先设置y轴范围,再绘制功率谱,这样Matplotlib会在绘制时自动适配你设定的范围,直接基于小波尺度生成合适的刻度,不会产生额外的重复标签:

import numpy as np
from wavelets import WaveletAnalysis
import matplotlib.pyplot as plt

def normalize(data, a, b):
    return [(b-a)*(((x-data.min())/(data.max()-data.min())))+a for x in data]

np.random.seed(420)
x = np.random.rand(23)
time = np.arange(len(x))

wa = WaveletAnalysis(x, time=time)

fig, ax1 = plt.subplots(figsize=(10,6))
# 先设置y轴范围
ax1.set_ylim(2, 8)
# 再绘制功率谱,此时会自动适配已设置的y轴范围
power = wa.wavelet_power
levels = np.logspace(-1, 1, 100)
contourf = ax1.contourf(time, wa.scales, power, levels=levels, cmap='viridis')

plt.colorbar(contourf, ax=ax1, label='Wavelet Power')
plt.show()

这两种方法都能完美解决重复ytick标签的问题,你可以根据自己的习惯选择其中一种~

内容的提问来源于stack exchange,提问作者Muon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:34:54