Python 在seaborn热图中使用自定义步骤设置yticklabels
我想将自定义y记号添加到我的seaborn热图中。第一个选项是默认选项,但是当我添加记号时 他们走到了最顶端: 也尝试以这种方式添加Ytick,但标签也粘贴在顶部Python 在seaborn热图中使用自定义步骤设置yticklabels,python,matplotlib,heatmap,seaborn,Python,Matplotlib,Heatmap,Seaborn,我想将自定义y记号添加到我的seaborn热图中。第一个选项是默认选项,但是当我添加记号时 他们走到了最顶端: 也尝试以这种方式添加Ytick,但标签也粘贴在顶部 yticklabels,yticks = [], [] for i in range(45): yticklabels.append(str(i) + "Mb") yticks.append(i) ax = sns.heatmap(result, cmap=cmap, yticklabels = yticklabe
yticklabels,yticks = [], []
for i in range(45):
yticklabels.append(str(i) + "Mb")
yticks.append(i)
ax = sns.heatmap(result, cmap=cmap, yticklabels = yticklabels)
ax.yticks = yticks
因此,完整的示例并不那么简单,但它是这样的:
for k, chromosome in df_genome.iterrows():
df_chromosome = df_blast[(df_blast.sseqid == chromosome.seqname)]
print chromosome.seqname
print(len(df_chromosome))
for i in range(0, chromosome.end, args.step):
start = i
end = i + args.step
if end > chromosome.end:
continue
# start = chromosome.end - args.step
# end = chromosome.end + 1
#print start, end
hits_count = len(df_chromosome[(df_chromosome.sstart >= start) & (df_chromosome.sstart <= end) & (df_chromosome.pident >= 80)])
if hits_count > max_hits_count:
max_chr_start = start
max_chr_end = end
max_chr = chromosome.seqname
max_hits_count = hits_count
print '->',chromosome.seqname,max_hits_count
#print(chromosome.seqname, start, end, hits_count)
position = start / 1000000.0
result.append( [chromosome.seqname,position, hits_count] )
#print result
df = pd.DataFrame(result)
df.columns = ['chromosome','position','hits']
result = pd.pivot_table(data=df,
index='position',
values='hits',
columns='chromosome')
#This is where I am stucked
yticklabels = []
for i in range(45):
yticklabels.append(str(i) + "Mb")
ax = sns.heatmap(result, cmap=cmap,yticklabels=7)
对于k,df_基因组中的染色体。iterrows():
df_染色体=df_blast[(df_blast.sseqid==chromose.seqname)]
打印chromose.seqname
打印(len(df_染色体))
对于范围内的i(0,chromose.end,args.step):
开始=i
结束=i+args.step
如果end>染色体.end:
持续
#开始=染色体.end-args.step
#结束=染色体。结束+1
#打印开始、结束
点击次数=len(df_染色体[(df_染色体.sstart>=start)&(df_染色体.sstart=80)])
如果点击次数>最大点击次数:
max_chr_start=开始
max_chr_end=end
max_chr=chromose.seqname
最大点击次数=点击次数
打印'->',染色体.seqname,最大点击数
#打印(chromose.seqname、开始、结束、点击次数)
位置=开始/1000000.0
结果.追加([染色体.序列名称,位置,点击次数])
#打印结果
df=pd.DataFrame(结果)
df.columns=['染色体','位置','hits']
结果=pd.pivot_表(数据=df,
index='position',
值='hits',
列(='染色体')
#这就是我受挫的地方
yticklabels=[]
对于范围(45)内的i:
yticklabels.append(str(i)+“Mb”)
ax=sns.heatmap(结果,cmap=cmap,yticklabels=7)
您可能还需要设置
yticks
?@DavidG添加了一个示例,您可以创建一个
for k, chromosome in df_genome.iterrows():
df_chromosome = df_blast[(df_blast.sseqid == chromosome.seqname)]
print chromosome.seqname
print(len(df_chromosome))
for i in range(0, chromosome.end, args.step):
start = i
end = i + args.step
if end > chromosome.end:
continue
# start = chromosome.end - args.step
# end = chromosome.end + 1
#print start, end
hits_count = len(df_chromosome[(df_chromosome.sstart >= start) & (df_chromosome.sstart <= end) & (df_chromosome.pident >= 80)])
if hits_count > max_hits_count:
max_chr_start = start
max_chr_end = end
max_chr = chromosome.seqname
max_hits_count = hits_count
print '->',chromosome.seqname,max_hits_count
#print(chromosome.seqname, start, end, hits_count)
position = start / 1000000.0
result.append( [chromosome.seqname,position, hits_count] )
#print result
df = pd.DataFrame(result)
df.columns = ['chromosome','position','hits']
result = pd.pivot_table(data=df,
index='position',
values='hits',
columns='chromosome')
#This is where I am stucked
yticklabels = []
for i in range(45):
yticklabels.append(str(i) + "Mb")
ax = sns.heatmap(result, cmap=cmap,yticklabels=7)