我正在使用Matplotlib,有大量的1D热图,每个热图都有自己的标签。但是,标签与图没有对齐,我无法自动工作。
这是一个MWE
import numpy as np
import matplotlib.pyplot as plt
data = np.random.rand(10, 1000)
dogs = ["woof", "bark", "bowwow"]
fig, axs = plt.subplots(10)
for i in range(10):
axs[i].scatter(np.linspace(0, 1, 1000), np.linspace(0,1,1000)*0, 2000,
c=data[i, :], marker="|", cmap='inferno')
axs[i].set_frame_on(False)
axs[i].set_yticklabels([])
axs[i].set_xticklabels([])
axs[i].set_xticks([])
axs[i].set_yticks([])
axs[i].set_ylabel(dogs[i%3], rotation='horizontal')
plt.show()
我尝试了
axs[i].yaxis.set_label_coords(x, y)
对于x和y的各种值,似乎都不起作用。我更希望它自动对齐,文本的底部对应于单个图的底部。
附件是显示对齐问题的图像。
Example
2条答案
按热度按时间oxcyiej71#
您可以通过seaborn创建热图,并使用
yticklabels=[label_name]
设置标签。将标签旋转到0度应该可以很好地对齐。注意,数据的形状应该是1xN
。cotxawn72#
经过一番折腾,我发现
足以对准Y标记。