如何删除 matplotlib 图的特定刻度标记?

Remove specific tick markers of a matplotlib plot, how?

我有以下问题:我正在创建一个绘图,其中我只想隐藏满足条件的某些 x 轴刻度标签(假设上面定义了 ax):

xticks = ax.xaxis.get_major_ticks()
for x_tick, y_tick in ax.get_lines()[0].get_xydata():
    if y_tick > -0.5:
        xticks[ int(x_tick) ].label1.set_visible( False )

问题是通过这种方式我得到了这样的东西(为了隐私不能显示完整的情节,我只放x轴截图):

因为xticks的数量确实很高(或多或少超过1500)。使用之前的代码,我只能隐藏标签,而不能隐藏标记。

有没有办法去除特定的刻度“槽口”(我不知道怎么称呼它们)或标记,以去除 x 轴上这条可怕的黑线?谢谢

您可以通过如下显式保存位置和文本来手动设置 x_ticks 应该在绘图中:

xticks = ax.xaxis.get_major_ticks()
visible_xticks_locs = []
visible_xticks_labels = []
for x_tick, y_tick in ax.get_lines()[0].get_xydata():
    if y_tick > -0.5:
        visible_xticks_locs.append(int(x_tick)) 
        visible_xticks_labels.append(xticks[int(x_tick)])
ax.set_xticks(ticks=visible_xticks_locs, labels=visible_xticks_labels)