具有特定轴标签的热图

时间:2017-07-19 14:01:45

标签: python pandas matplotlib heatmap seaborn

我正在尝试使用来自pandas数据帧的2列数据绘制热图。但是,我想使用第3列来标记x轴,理想情况下是通过颜色来标记,但是其他方法(例如附加轴)也同样适合。我的数据框是:

    MUT   SAMPLE   VAR             GROUP
    True  s1       1_1334442_T     CC002
    True  s2       1_1334442_T     CC006
    True  s1       1_1480354_GAC   CC002
    True  s2       1_1480355_C     CC006
    True  s2       1_1653038_C     CC006
    True  s3       1_1730932_G     CC002

...

只是为了更好地了解数据;有9种不同类型的'GROUP',~60,000种'VAR'和540'SAMPLE。我不确定这是否是在python中构建热图的最佳方法,但这是我到目前为止所知道的:

pivot = pd.crosstab(df_all['VAR'],df_all['SAMPLE'])
sns.set(font_scale=0.4)
g = sns.clustermap(pivot, row_cluster=False, yticklabels=False, linewidths=0.1, cmap="YlGnBu", cbar=False)
plt.show()

我不确定如何让'GROUP'沿着x轴显示,作为附加轴还是只是着色轴标签?任何帮助将非常感激。

我不确定'MUT'列是否是布尔变量是一个问题,df_all在每个'VAR'上都是'TRUE'但是作为枢轴,任何没有特定'VAR'的样本填充为0,其他填充为1.我的目的是尝试聚类具有类似“VAR”轮廓的样本。我希望这有帮助。

如果我能进一步澄清,请告诉我?非常感谢

1 个答案:

答案 0 :(得分:2)

看看这个例子。您可以为clustermap函数指定列表或数据框列。通过指定col_colors参数或row_colors参数,您可以根据该列表为行或列指定颜色。

在下面的示例中,我使用iris数据集并创建一个pandas系列对象,该对象指定特定行应具有的颜色。大熊猫系列作为row_colors的参数。

iris = sns.load_dataset("iris")
species = iris.pop("species")
lut = dict(zip(species.unique(), "rbg"))
row_colors = species.map(lut)
g = sns.clustermap(iris, row_colors=row_colors,row_cluster=False)

此代码会生成以下图像。

您可能需要进一步调整以包含组的着色图例。

enter image description here