Python 在seaborn热图中使用自定义步骤设置yticklabels

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

我想将自定义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 = 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)