gpt4 book ai didi

python - matplotlib 热图的中心对齐刻度标签

转载 作者:行者123 更新时间:2023-12-04 17:20:18 24 4
gpt4 key购买 nike

我已经用 imshow 绘制了一个热图,但即使我制作了 ha='center',我也无法让 x 刻度标签居中对齐。 .

这是我的代码:

font= mpl.rcParams['font.size']=8.0
lineWidth= mpl.rcParams['lines.linewidth']= 1.0
absolute_max=abs(max_num)
absolute_min=abs(min_num)
cb_boundary=max(absolute_max,absolute_min)
tree=Phylo.read("reorder.nwk","newick")
a=1.0

cdict = {'red': ((0.0, 0.0, 0.0),
(0.25,0.0, 0.0),
(0.5, 0.8, 1.0),
(0.75,1.0, 1.0),
(1.0, 0.4, 1.0)),

'green': ((0.0, 0.0, 0.0),
(0.25,0.0, 0.0),
(0.5, 0.9, 0.9),
(0.75,0.0, 0.0),
(1.0, 0.0, 0.0)),

'blue': ((0.0, 0.0, 0.4),
(0.25,1.0, 1.0),
(0.5, 1.0, 0.8),
(0.75,0.0, 0.0),
(1.0, 0.0, 0.0))
}

plt.register_cmap(name='BlueRed', data=cdict)
norm = mpl.colors.Normalize(vmin=-3.0, vmax=3.0)
cmap = plt.get_cmap('BlueRed')
masked_array = np.ma.masked_where(full_len==np.NaN,full_len)
cmap.set_bad('green',1.0)
fig= plt.figure(figsize=(19,10))
rect_phyl = [-0.7, 0.3, 0.2, 0.6]
rect_ht = [-0.5,0.3 , 0.3, 0.6]
phyl_ax = plt.axes(rect_phyl,frameon=True)
ht_ax = plt.axes(rect_ht)
##fig.suptitle(file_handle.replace('_del.csv',''),fontsize=22)
phyl_ax.add_patch(Rectangle((8.1,17.6),6.5,16.9,edgecolor="brown", fill=False))
phyl_ax.add_patch(Rectangle((8.1,10.4),6.5,7.0,edgecolor="magenta", fill=False))
phyl_ax.add_patch(Rectangle((8.1,7.6),6.5,2.6,edgecolor="black", fill=False))
phyl_ax.add_patch(Rectangle((8.1,0.3),6.5,6.9,edgecolor="turquoise", fill=False))
fig.subplots_adjust(hspace=0,wspace=0)
Phylo.draw(tree, axes=phyl_ax, do_show=False,show_confidence=False)

ht_ax.set_xlim(0,34)
ht_ax.set_ylim(0,34)
phyl_ax.set_xlim(0,15)

divider = make_axes_locatable(ht_ax)
cbax = divider.append_axes("right", size="5%", pad=0.10)
phyl_ax.set(xlabel='',ylabel='')
plt.setp(phyl_ax.get_xticklabels(),visible=False)
plt.setp(phyl_ax.get_yticklabels(),visible=False)
plt.setp(ht_ax.get_xticklabels(),visible=True)
plt.setp(ht_ax.get_yticklabels(),visible=False)
plt.setp(phyl_ax.get_xticklines(),visible=False)
plt.setp(phyl_ax.get_yticklines(),visible=False)
plt.setp(ht_ax.get_xticklines(),visible=False)
plt.setp(ht_ax.get_yticklines(),visible=False)
img = ht_ax.imshow(masked_array, cmap=cmap, interpolation='none',aspect='auto',vmin=-cb_boundary,vmax=cb_boundary,extent=[34,0,34,0],origin='lower')
xticks=range(34)
ht_ax.xaxis.set_ticks(xticks)
ht_ax.yaxis.set_ticks(xticks)
ht_ax.grid(True, which='both')
ha = ['right', 'center', 'left']
ht_ax.set_xticklabels(txtnames,rotation=45,fontsize=8,ha=ha[1],minor=False)

plt.colorbar(img, cax=cbax)
heatmap_file=fig.savefig('/home/Desktop/heatmap/'+file_handle.replace('.csv','')+'.pdf',bbox_inches='tight',dpi=150)

有人可以帮我找出错误吗?

最佳答案

下面的例子表明对齐设置并不太难。您可能在 ht_ax.set_xticklabels 之前有一些干扰命令。称呼;尤其是在调用 imshow 之前操作轴而不是 after 可能没有所需的响应,因为 imshow ,像许多/大多数绘图命令一样,包括轴的基本配置。

你能去掉你的大部分配置吗?

# some random data to show
I = np.random.rand(25, 35)
# and some labels that are quite long (so differences are visible)
labels = range(0, 30000, 5000)

fig, ax = plt.subplots(3, 1, num=1)
ha = 'center'
ax[0].imshow(I, interpolation='none',aspect='auto')
ax[0].set_xticklabels(labels, rotation=45, ha='left', minor=False)

ax[1].imshow(I, interpolation='none',aspect='auto')
ax[1].set_xticklabels(labels, rotation=45, ha='center', minor=False)

ax[2].imshow(I, interpolation='none',aspect='auto')
ax[2].set_xticklabels(labels, rotation=45, ha='right', minor=False)

plt.subplots_adjust(hspace=0.5)
plt.show()

label orientation

关于python - matplotlib 热图的中心对齐刻度标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23637219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com