作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个从 Pandas 数据帧生成的聚类图。其中两列用于生成聚类图,我需要使用第 3 列使用 sns.palplot(sns.light_palette('red'))
调色板生成 col_colors 条(值将来自0 - 1,浅色 - 深色)。
伪代码看起来像这样:
df=pd.DataFrame(input, columns = ['Source', 'amplicon', 'coverage', 'GC'])
tiles = df.pivot("Source", "amplicon", "coverage")
col_colors = [values from df['GC']]
sns.clustermap(tiles, vmin=0, vmax=2, col_colors=col_colors)
我正在努力寻找有关如何设置 col_colors 的详细信息,以便将正确的值链接到适当的图 block 。一些方向将不胜感激。
最佳答案
这个例子用样本数据会更容易解释。我不知道你的数据是什么样的,但假设你有一堆 GC 内容测量例如:
import seaborn as sns
import numpy as np
import pandas as pd
data = {'16S':np.random.normal(.52, 0.05, 12),
'ITS':np.random.normal(.52, 0.05, 12),
'Source':np.random.choice(['soil', 'water', 'air'], 12, replace=True)}
df=pd.DataFrame(data)
df[:3]
16S ITS Source
0 0.493087 0.460066 air
1 0.607229 0.592945 water
2 0.577155 0.440726 water
所以数据就是GC内容,然后有一列描述来源。假设我们要绘制 GC 内容的聚类图,我们使用 Source
列来定义网络
#create a color palette with the same number of colors as unique values in the Source column
network_pal = sns.light_palette('red', len(df.Source.unique()))
#Create a dictionary where the key is the category and the values are the
#colors from the palette we just created
network_lut = dict(zip(df.Source.unique(), network_pal))
#get the series of all of the categories
networks = df.Source
#map the colors to the series. Now we have a list of colors the same
#length as our dataframe, where unique values are mapped to the same color
network_colors = pd.Series(networks).map(network_lut)
#plot the heatmap with the 16S and ITS categories with the network colors
#defined by Source column
sns.clustermap(df[['16S', 'ITS']], row_colors=network_colors, cmap='BuGn_r')
基本上上面大部分代码所做的是创建一个颜色向量,该向量对应于数据框的 Source
列。您当然可以手动创建它,其中列表中的第一种颜色将映射到数据框中的第一行,第二种颜色将映射到第二行,依此类推(绘制时此顺序会更改),然而,这将是很多工作。我使用了红色调色板,因为这是你在问题中提到的,但我可能会建议使用不同的调色板。我按行着色,但是你可以对列做同样的事情。希望这对您有所帮助!
关于python - 在 pandas 的 seaborn clustermap 中设置 col_colors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34334796/
我有一个从 Pandas 数据帧生成的聚类图。其中两列用于生成聚类图,我需要使用第 3 列使用 sns.palplot(sns.light_palette('red')) 调色板生成 col_colo
我是一名优秀的程序员,十分优秀!