我正在尝试使用来自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”轮廓的样本。我希望这有帮助。
如果我能进一步澄清,请告诉我?非常感谢
答案 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)
此代码会生成以下图像。
您可能需要进一步调整以包含组的着色图例。