绘制在seaborn clustermap之上

Tit*_*llo 5 python plot matplotlib pandas seaborn

我使用生成了一个集群映射seaborn.clustermap.我想在热图的顶部绘制/绘制一条水平线,如图所示在此输入图像描述

我只是尝试使用matplotlib:

plt.plot([x1, x2], [y1, y2], 'k-', lw = 10)
Run Code Online (Sandbox Code Playgroud)

但是没有显示该行.返回的对象seaborn.clustermap没有像这个类似问题中的任何属性.我该如何绘制线条?

以下是生成类似于我发布的"随机"群集图的代码:

import numpy as np
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
import random 

data = np.random.random((50, 50))
df = pd.DataFrame(data)
row_colors = ["b" if random.random() > 0.2 else "r"  for i in range (0,50)]
cmap = sns.diverging_palette(133, 10, n=7, as_cmap=True)
result = sns.clustermap(df, row_colors=row_colors, col_cluster = False, cmap=cmap, linewidths = 0)
plt.plot([5, 30], [5, 5], 'k-', lw = 10)
plt.show()
Run Code Online (Sandbox Code Playgroud)

Dan*_*ein 11

您想要的轴对象隐藏在ClusterGrid.ax_heatmap中.此代码找到此轴并简单地使用ax.plot()来绘制线.你也可以使用ax.axhline().

import numpy as np
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
import random 

data = np.random.random((50, 50))
df = pd.DataFrame(data)
row_colors = ["b" if random.random() > 0.2 else "r"  for i in range (0,50)]
cmap = sns.diverging_palette(133, 10, n=7, as_cmap=True)
result = sns.clustermap(df, row_colors=row_colors, col_cluster = False, cmap=cmap, linewidths = 0)
print dir(result)  # here is where you see that the ClusterGrid has several axes objects hiding in it
ax = result.ax_heatmap  # this is the important part
ax.plot([5, 30], [5, 5], 'k-', lw = 10)
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述