更改ticklabels的alpha值而不指定文本

时间:2018-03-05 12:14:16

标签: python matplotlib label alpha

Matplotlib允许更改几乎任何东西的alpha值,但它如何适用于ticklabel? 如果我有文字,很容易:

ax.set_xticklabel(labels, alpha=alpha)

如果我没有文本,则情况会有所不同,因为由于缺少标签,以下内容会引发TypeError。

ax.set_xticklabel(alpha=alpha)

因此,我的下一个想法是获取自动生成的ticklabels并使用它们来完成这项工作:

labels = [label.get_text() for label in ax.get_xticklabels()]
ax.set_xticklabels(labels, alpha=alpha

问题在于,由于matplotlib的动态特性,标签是空的(参见here)。

那么,有没有一种简单的方法可以在不事先知道文本的情况下更改我的刻度标签的alpha值?

1 个答案:

答案 0 :(得分:1)

如果要更改颜色,可能不希望自己设置ticklabels。原因是通过ax.set_ticklabels设置标签会将格式化程序更改为FixedFormatter;有了这个会松动自动格式化行为。

而是更改后来构成ticklabels的文本对象的alpha。为此,plt.setp是一个有用的功能。

plt.setp(ax.get_xticklabels(), alpha=0.3)

同样可以通过

实现
for t in ax.get_xticklabels():
    t.set_alpha(0.3)