Отметка оси Relabel в тепловой карте морского побережья - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть тепловая карта морского дна, которую я строю из матрицы значений.Каждый элемент матрицы соответствует праву, что я хотел бы сделать метку для каждой строки / столбца в матрице.

Я пытался использовать функцию ax.set_xticklabel(), чтобы выполнить это, но, похоже, ничего не делает,Вот мой код:

type(jr_matrix)
>>> numpy.ndarray

jr_matrix.shape
>>> (15, 15)

short_cols = ['label1','label2',...,'label15'] # list of strings with len 15

fig, ax = plt.subplots(figsize=(13,10)) 
ax.set_xticklabels(tuple(short_cols)) # i also tried passing a list
ax.set_yticklabels(tuple(short_cols))
sns.heatmap(jr_matrix, 
            center=0, 
            cmap="vlag", 
            linewidths=.75, 
            ax=ax,
            norm=LogNorm(vmin=jr_matrix.min(), vmax=jr_matrix.max()))

Все еще имеет индексы матрицы в виде меток:

enter image description here

Любые идеи о том, как правильноизменить эти метки будет очень признателен.

Редактировать: я делаю это с помощью ноутбуков Jupyter, если это имеет значение.

1 Ответ

0 голосов
/ 13 сентября 2018

Вы устанавливаете метки x и y для только что созданной оси. Затем вы строите тепловую карту морской волны, которая перезапишет только что установленные метки.

Решение состоит в том, чтобы сначала создать тепловую карту, а затем установить метки галочек:

fig, ax = plt.subplots(figsize=(13,10)) 

sns.heatmap(jr_matrix, 
            center=0, 
            cmap="vlag", 
            linewidths=.75, 
            ax=ax,
            norm=LogNorm(vmin=jr_matrix.min(), vmax=jr_matrix.max()))

# passing a list is fine, no need to convert to tuples
ax.set_xticklabels(short_cols)
ax.set_yticklabels(short_cols)
...