- цветная полоса для карты кластера (слева) находится там, где Мне это нужно, и размер, который мне нужен, однако он не показывает отметки Y для диапазона моих данных.
- цветная полоса тепловой карты (справа) находится не там, где я хочу, слишком большой, а также не показывает галочек. Мне бы хотелось, чтобы она была точно такой же, как первая цветная полоса, но с правой стороны.
Использование Python в VScode;
Код: Выделить всё
import matplotlib.gridspec
#clustermap from averaged protein data!
g = sns.clustermap(hmprot, figsize=(8,12), col_cluster=False, yticklabels=True, cmap = 'viridis')
labels = [t.get_text() for t in g.ax_heatmap.yaxis.get_majorticklabels()]
g.gs.update(left=0.05, right=0.49)
#create new gridspec for the right part
gs2 = matplotlib.gridspec.GridSpec(1,1)
hmrna = hmrna.reindex(index=labels)
# create axes within this new gridspec
ax2 = g.fig.add_subplot(gs2[0])
# get position of heatmap
heatmap_bbox = g.ax_heatmap.get_position()
ax2.set_position([0.5, heatmap_bbox.y0, .35, heatmap_bbox.height])
# plot heatmap in the new axes
sns.heatmap(hmrna, ax=ax2, cmap = 'viridis', cbar=True, yticklabels=True,
cbar_kws= dict(use_gridspec=False,location = 'right', shrink= 0.5))
#change font size for the genes on the y-axis
g.tick_params(axis='y', labelsize=6, labelright = False, right=False)
g.tick_params(axis='x', labelbottom = True, bottom=False)
ax2.tick_params(axis='y', labelsize=8, labelright=True, left=False, labelleft=False, labelrotation = 0)
ax2.tick_params(axis='x', labelbottom = True, bottom=False)
#then adjusting the labels for each axis individually
# g.set_xlabel(' ') -> Doesn't work
ax2.set_xlabel(' ')
ax2.set_title('RNAseq', weight="bold")
# ax2.set_title('Proteomics(C)', weight="bold") -> Doesn't work
x0, _y0, _w, _h = g.cbar_pos
g.ax_cbar.set_position([0.01, 0.04, 0.02, 0.1])
g.ax_cbar.set_title('Z-score')
g.ax_cbar.tick_params(axis='x', length=10)
title = "Clustermap of Protein (left) & RNA (right) " + str(GO_term)
plt.suptitle(title, weight="bold", fontsize=20, y=0.85)
fig.tight_layout()
plt.show()
Код: Выделить всё
cbar_2_ax = fig.add_axes([0.95, 0.04, 0.02, 0.1])
cbar_2 = mp.colorbar(ax2, cax=cbar_2_ax)
Я не уверен, как действовать дальше, возможно, я использую не те функции чтобы изменить это, но мне не удалось найти что-то работающее.
Кроме того, мне удалось «настроить» тепловую карту с собственным заголовком и удалить метку «группа». по оси х. Мне не удалось понять, как сделать то же самое для карты кластера, присвоить ей собственный заголовок и удалить метку «группа». Те же функции для тепловой карты здесь не работают.
Фиктивная версия моего кода, которая воспроизводит мои проблемы. Как исправить правильную цветовую панель?
Некоторая фиктивная версия моего кода, воспроизводящая проблему:
Код: Выделить всё
df = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'))
df2 = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'))
#clustermap from df1
g = sns.clustermap(df, figsize=(12,18), col_cluster=False, yticklabels=True, cmap = 'viridis')
g.gs.update(left=0.05, right=0.49)
#create new gridspec for the right part
gs2 = matplotlib.gridspec.GridSpec(1,1)
# create axes within this new gridspec
ax2 = g.fig.add_subplot(gs2[0])
# get position of heatmap
heatmap_bbox = g.ax_heatmap.get_position()
ax2.set_position([0.5, heatmap_bbox.y0, .35, heatmap_bbox.height])
# plot boxplot in the new axes
sns.heatmap(df2, ax=ax2, cmap = 'viridis', cbar=True, yticklabels=True,
cbar_kws= dict(use_gridspec=False,location = 'right', shrink= 0.5)
)
g.tick_params(axis='y', labelsize=6, labelright = False, right=False)
g.tick_params(axis='x', labelbottom = True, bottom=False)
ax2.tick_params(axis='y', labelsize=8, labelright=True, left=False, labelleft=False, labelrotation = 0)
ax2.tick_params(axis='x', labelbottom = True, bottom=False)
ax2.set_title('title', weight="bold") # Set a custom title
x0, _y0, _w, _h = g.cbar_pos
g.ax_cbar.set_position([0.01, 0.04, 0.02, 0.1])
g.ax_cbar.set_title('Z-score')
g.ax_cbar.tick_params(axis='x', length=10)
title = "Clustermap (left) & heatmap (right) "
plt.suptitle(title, weight="bold", fontsize=20, y=0.85)
fig.tight_layout()
plt.show()


Подробнее здесь: https://stackoverflow.com/questions/784 ... -colorbars