Цветовая шкала Heatmap накапливается в фигурах Matplotlib/Seaborn
У меня есть список фреймов данных, и я хочу сделать тепловые карты каждого фрейма данных в списке. Первая тепловая карта получается отлично, но вторая имеет две цветовые полосы, одна намного больше другой, что искажает фигуру. Третий имеет ТРИ цветовых полосы, последний еще больше, и это продолжается столько же тепловых карт, сколько я делаю.
Это кажется мне ошибкой, так как я понятия не имею, почему это происходит. Каждая тепловая карта должна храниться как отдельный элемент в списке тепловых карт, и даже если я нанесу их на график отдельно, вместо того, чтобы использовать циклическое или списочное понимание, у меня возникнет та же проблема.
Вот мой код:
# Set the seaborn font size.
sns.set(font_scale=0.5)
# Ensure that labels are not cut off.
plt.gcf().subplots_adjust(bottom=0.18)
plt.gcf().subplots_adjust(right=.3)
black_yellow = sns.dark_palette("yellow",10)
heatmap_list = [sns.heatmap(df, cmap=black_yellow, xticklabels=True, yticklabels=True) for df in df_list]
[heatmap_list[x].figure.savefig(file_names_list[x]+'.pdf', format='pdf') for x in range(0,len(heatmap_list))]
1 ответ
sns.heatmap() создает проблему, пока мы работаем в цикле. Чтобы решить эту проблему, первая итерация будет выполняться индивидуально, а остальная часть цикла останется прежней, но мы добавим параметр
cbar=False
чтобы остановить эту рекурсию цветной полосы в части цикла.
# Set the seaborn font size.
sns.set(font_scale=0.5)
# Ensure that labels are not cut off.
plt.gcf().subplots_adjust(bottom=0.18)
plt.gcf().subplots_adjust(right=.3)
black_yellow = sns.dark_palette("yellow", 10)
hm = sns.heatmap(df_list[0], cmap=black_yellow, xticklabels=True, yticklabels=True)
hm.figure.savefig(file_names_list[0]+'.pdf', format='pdf')
heatmap_list = [sns.heatmap(df_list[i], cmap=black_yellow, xticklabels=True, yticklabels=True, cbar=False) for i in range(1, len(df_list))]
[heatmap_list[x].figure.savefig(file_names_list[x+1]+'.pdf', format='pdf') for x in range(0, len(heatmap_list))]