在matplotlib颜色栏中隐藏每n个记号标签的最干净的方法?

2024-09-19 21:00:33 发布

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

水平色条上的标签靠得太近,我不想进一步减小文本大小:

cbar = plt.colorbar(shrink=0.8, orientation='horizontal', extend='both', pad=0.02)
cbar.ax.tick_params(labelsize=8)

horizontal colorbar with bad labels

我想保留所有的蜱虫,但去掉其他标签。

我发现的大多数示例都将用户指定的字符串列表传递给cbar.set_tickleals()。我在寻找一个普遍的解决办法。

我玩过各种各样的

cbar.set_ticklabels(cbar.get_ticklabels()[::2])

以及

cbar.ax.xaxis.set_major_locator(matplotlib.ticker.MaxNLocator(nbins=4))

但我还没找到魔法组合。

我知道一定有一个干净的方法来做这个使用定位器对象。


Tags: 文本水平plt标签axsetextendorientation
3条回答

给那些喜欢的人一个班轮!

n = 7  # Keeps every 7th label
[l.set_visible(False) for (i,l) in enumerate(ax.xaxis.get_ticklabels()) if i % n != 0]

对于循环标签,并调用set_visible()

for label in cbar.ax.xaxis.get_ticklabels()[::2]:
    label.set_visible(False)

刚刚碰到这个线索,很好的答案。 我在想办法把每一滴水都藏在第N滴水之间。找到枚举函数。所以如果有人在寻找类似的东西,你可以这样做。

for index, label in enumerate(ax.xaxis.get_ticklabels()):
    if index % n != 0:
        label.set_visible(False)

相关问题 更多 >