是否可以在Seaborn熱圖的邊緣添加行和列的統計資料?
因此,對于右側的每一行,我想顯示行平均值(每個月),而在年度的底部邊緣,我想顯示每列的列平均值。
uj5u.com熱心網友回復:
如果你正在處理一個像這樣的資料框架:
如果你正在處理一個像這樣的資料框架:
df = pd.DataFrame({'date': pd. date_range(start = '1949-01-01'/span>, end = '1960-12-01'/span>, freq = 'MS'/span>)})
df['value'] = np.random.randint(100, 600, len(df))
日期值
0 1949-01-01 202
1 1949-02-01 5352 1949-03-01 448
3 1949-04-01 370
4 1949-05-01 206
.. ... ...
139 1960-08-01 238 ......
140 1960-09-01 598[/span
141 1960-10-01 180
142 1960-11-01 491
143 1960-12-01 262
重新塑造。
另外,你可以改變最后一列和最后一行的顏色映射,以提高可見度:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
df = pd.DataFrame({'date': pd.date_range(start = '1949-01-01', end = '1960-12-01', freq = 'MS')})
df['value'] = np.random.randint(100, 600, len(df))
df['month'] = df['date'].dt.month_name()。 str.slice(stop = 3).sort_values()
df['year'] = df['date'].dt.year
df = df.pivot(columns = 'year', index = 'month', values = 'value')
df['month_mean'] = df.mean(axis = 1)
df.loc['year_mean'] = df.mean(axis = 0)
df_values = df.copy()
df_values['month_mean'] = float('nan')
df_values.loc['year_mean'] = float('nan')
df_means = df.copy()
df_means.loc[:-1, :-1] = float('nan'/span>)
fig, ax = plt.subplots()
sns.heatmap(ax = ax, data = df_values, annot = True, fmt = '. 0f', cmap = 'Reds', vmin = df.to_numpy().min(), vmax = df.to_numpy().max()
sns.heatmap(ax = ax, data = df_means, annot = True, fmt = ' 。 0f', cmap = 'Blues', vmin = df.to_numpy().min(),vmax = df.to_numpy().max()
plt.show()
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/312021.html
標籤:



