Seaborn集群图作为子图

3
Seaborn的clustermap似乎是一个图形级别的绘图,它在内部创建了自己的图形和坐标轴。 我想使用一个簇作为子图,以便能够在同一图中添加额外的绘图(例如,在热图的顶部添加一个箱形图)。 如何做到这一点? 谢谢。 以下是一个clustermap示例:
import numpy as np
import pandas as pd
import seaborn as sns

nb_features = 20

tmp = [v for v in zip(np.repeat(['A', 'B'], 5), 
       np.hstack([range(5), range(5)]))]
index = pd.MultiIndex.from_tuples(tmp)

df = pd.DataFrame(np.vstack([np.random.rand(5, nb_features) + 1, 
                             np.random.rand(5, nb_features) - 1]), index=index).T

# Returns a seaborn.matrix.ClusterGrid
cax = sns.clustermap(df)

enter image description here


4
请发布一个合适的MCVE:http://stackoverflow.com/help/mcve (意思是,请发布一个符合要求的最小化完整可运行示例,以便其他人可以更好地理解和解决您的编程问题。) - Kartik
1个回答

1
您可以通过subplots_adjust()添加一些间隔到图形中。然后,您可以通过fig.add_axes([x, y, width, height])图形坐标中添加一个新的轴。
以下是一个示例:
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

sns.set_theme(color_codes=True)
iris = sns.load_dataset("iris")
species = iris.pop("species")
g = sns.clustermap(iris)
g.fig.set_size_inches(20, 10)
g.fig.subplots_adjust(right=0.5)
ax = g.fig.add_axes([0.55, 0.05, 0.42, 0.92])
ax.plot(np.random.randn(1000).cumsum())
plt.plot()

example clustermap with new subplot


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接