python size - Изменение поворота тик-ярлыков в Seaborn heatmap




by column (3)

seaborn использует matplotlib внутренне, поэтому вы можете использовать функции matplotlib для изменения ваших сюжетов. Я изменил код ниже, чтобы использовать функцию plt.yticks чтобы установить rotation=0 что устраняет проблему.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns


data = pd.DataFrame(np.random.normal(size=40*40).reshape(40,40))

yticks = data.index
keptticks = yticks[::int(len(yticks)/10)]
yticks = ['' for y in yticks]
yticks[::int(len(yticks)/10)] = keptticks

xticks = data.columns
keptticks = xticks[::int(len(xticks)/10)]
xticks = ['' for y in xticks]
xticks[::int(len(xticks)/10)] = keptticks

sns.heatmap(data,linewidth=0,yticklabels=yticks,xticklabels=xticks)

# This sets the yticks "upright" with 0, as opposed to sideways with 90.
plt.yticks(rotation=0) 

plt.show()

Я планирую карту тепла в Сиборне. Проблема в том, что у меня слишком много квадратов в моем сюжете, поэтому ярлыки x и y слишком близки друг к другу, чтобы быть полезными. Поэтому я создаю список xticks и yticks для использования. Однако передача этого списка в функцию приводит к повороту меток на графике. Было бы очень приятно, если бы морская волна автоматически сбросила некоторые из тиков, но запрет на то, что я хотел бы иметь ягодицы в вертикальном положении.

import pandas as pd
import numpy as np
import seaborn as sns

data = pd.DataFrame(np.random.normal(size=40*40).reshape(40,40))

yticks = data.index
keptticks = yticks[::int(len(yticks)/10)]
yticks = ['' for y in yticks]
yticks[::int(len(yticks)/10)] = keptticks

xticks = data.columns
keptticks = xticks[::int(len(xticks)/10)]
xticks = ['' for y in xticks]
xticks[::int(len(xticks)/10)] = keptticks

sns.heatmap(data,linewidth=0,yticklabels=yticks,xticklabels=xticks)


Вы также можете вызвать методы объекта heatmap:

    g = sns.heatmap(data,linewidth=0,yticklabels=yticks,xticklabels=xticks)
    g.set_yticklabels(g.get_yticklabels(), rotation = 0, fontsize = 8)

Я не уверен, почему это не в документации для sns.heatmap, но те же методы описаны здесь: http://seaborn.pydata.org/generated/seaborn.FacetGrid.html

Я считаю, что эти методы доступны для каждого объекта сюжета на море, но не могут найти общий API для этого.


Heatcanvas выглядит неплохо. Он также имеет расширение листовки, которое запускается поверх openstreetmaps https://github.com/sunng87/heatcanvas

Он работает довольно хорошо в нескольких точках (<200) или около того, но на несколько тысяч точек немного медленнее. Я думаю, что он мог бы также пересчитать чаще, чем необходимо после панорамирования и масштабирования, и у меня были некоторые проблемы с изменением тепловой карты на лету (замена тепловой карты на другую с помощью javascript), думаю, мне нужно немного поэкспериментировать с ней или связаться с ней автор







python heatmap seaborn