【发布时间】:2016-05-09 18:00:00
【问题描述】:
我有一个包含大约 200 个观察值的数据集,我想将其绘制为热图。每个观察都有一个与之关联的字符串,我想显示它。我的问题是我无法阅读这些标签,因为它们相互重叠。因此,我的问题是,是否可以以某种方式将热图的单元格大小设置为 yticklabel 的字体大小,或者是否有任何其他解决方法。
在下面的示例中,我使用随机数据进行说明:
import seaborn as sns
import numpy as np
data = np.random.rand(200, 10)
ax = sns.heatmap(data)
for item in ax.get_yticklabels():
item.set_rotation(0)
这给了我:
有没有办法让这些yticklabels 可读?在理想情况下,我有一个选项允许我将单元格的高度设置为yticklabels 的字体大小。这可能吗?
编辑:
如 cmets 中所述,一种可能性是增加图形的大小。我尝试如下:
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
data = np.random.rand(200, 10)
fig, ax = plt.subplots()
fig.set_size_inches(38.5, 10.5)
ax2 = sns.heatmap(data, ax=ax)
for item in ax2.get_yticklabels():
item.set_rotation(0)
这给了我相同的输出。我使用正确吗?
【问题讨论】:
-
是否可以只打印 5 个或 10 个中的 1 个?
-
不,我想将它们全部显示出来,这很棘手,我想。
-
你可以把它切成两半,然后在右边画一半,在另一边画一半?
-
但是我怎么知道哪个标签属于哪一行呢?在理想的世界中,我可以选择:
cellheight = seizeOfYticklabel -
如果您希望所有这些标签都可见,您显然需要更多空间。您是否尝试过简单地增加图形高度?
标签: python matplotlib heatmap axis-labels seaborn