Как, используя plotly, построить половину heatmap(треугольник выше/ниже главное диагонали)?
Хочу построить интерактивный heatmap для матрицы корреляций, в ноутбуке уже работаю с plotly.
Если строить "как есть", то выходит вот такое, потому что матрица 100х100.

Хочу построить половину матрицы. Она будет информативнее. Для этих данных с помощью matplotlib:
Но не могу понять как мне это сделать именно в plotly. Пока приходит в голову решение вручную прописать None для верхнего треугольника, но возможно есть какой-то параметр или функция? В документации, увы, не нашла.
Upd
Пока рассмотрела еще такой вариант решения: удалила данные на главной диагонали
df= df.drop(['id'], axis=1).corr()
for i in range(df.shape[0]):
df.iloc[i,i] = None
fig = px.imshow(df)
fig.show()
Выглядит информативнее, но насколько такой подход правильный я не знаю
Ответы (2 шт):
Как вы уже предположили в вопросе, проще всего заполнить верхний/нижний треугольник NaN. Это легко делается средствами Numpy:
import plotly.express as px
df = pd.read_csv("corr.csv", index_col=0)
corr_arr = df.to_numpy()
corr_arr[np.triu_indices_from(corr_arr)] = np.nan
df_corr = pd.DataFrame(corr_arr, index=df.index, columns=df.columns)
fig = px.imshow(df_corr)
я канешн не уверен, но стоит попытаться
plt.figure(figsize=(12, 6))
sns.heatmap(DATA, cmap="coolwarm", cbar=False, yticklabels=False)
plt.title("heatmap")
plt.show()


