[英]Change Seaborn heatmap Y-ticklabels font color for alternate labels
我有一个 seaborn 热图,在 Y 轴上有 100 多个标签。 我想以交替方式将 Y 标签的字体颜色更改为红色和蓝色。 如果我有 10 个 Y 标签,那么 5 个标签应该有蓝色字体,5 个标签应该有红色字体。
请帮助
您可以使用ax.ticklabel.font()
来实现这一点。 您甚至可以使用字体轻松区分邻居。 这里给出了一个示例代码。
import numpy as np; np.random.seed(0)
import seaborn as sns; sns.set_theme()
uniform_data = np.random.rand(10, 12)
ax = sns.heatmap(uniform_data)
for i, tick_label in enumerate(ax.axes.get_yticklabels()):
if i%2:
tick_label.set_color("blue")
tick_label.set_fontsize("15")
else:
tick_label.set_color("red")
tick_label.set_fontsize("10")
虽然按照@Redox 的建议进行枚举是必要的,但您需要一个灵活的解决方案,以防您的 label 是一个字符串,这在热图中很常见。 有关更多信息,请参阅[matplotlib documentation][1]
。 感谢@gasvom 的回答[here][1]
的启发。
所以我会这样执行:
import numpy as np;
import seaborn as sns;
uniform_data = np.random.rand(10, 12)
ax = sns.heatmap(uniform_data)
for i, tick_label in enumerate(ax.axes.get_yticklabels()):
if tick_label.get_text()=="a string of your choice":
tick_label.set_color("blue")
tick_label.set_fontsize("15")
else:
tick_label.set_color("red")
tick_label.set_fontsize("10")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.