【发布时间】:2017-04-12 07:45:35
【问题描述】:
我想在网格中绘制一系列 seaborn 热图。我知道子图的数量(可以是奇数或偶数)。 热图将按“星期几”(y 轴)和“一天中的小时”(x 轴)显示平均“占用率”,例如它们都共享相同的 x / y 域。
这是我当前的代码:
df2 = df[['name','openLots','occupationRatio','DoW','Hour']]
fig, axs = plt.subplots(figsize=(24,24), nrows=7, ncols=6)
axs = axs.flatten()
locations = df2['name'].sort_values().unique()
def occupation_heatmap (name, ax):
dfn = df2[df2['name'] == name]
dfn = dfn.groupby(['DoW', 'Hour']).mean()['occupationRatio'].unstack()
dfn = dfn.reindex(['Mon', 'Tue', 'Wed','Thu','Fri','Sat','Sun'])
sns.heatmap(data=dfn, cmap="coolwarm", vmin=0, vmax=1.0, ax= ax)
ax.set_title(name)
i = 0
for n in locations:
occupation_heatmap (n, axs[i])
i = i+1
plt.tight_layout()
- 每行只有一次 y 轴标签 (DoW)(最左边的图)
- 仅在每行最右边的图上显示颜色图图例(或完全不使用它,颜色很容易解释)
- 删除最后一行中的“空地块”,因为总数为奇数
非常感谢您的任何提示
【问题讨论】:
-
只是为了帮助改善您对事物运作方式的心理模型,这些不是“seaborn subplots”,它们是您碰巧使用 seaborn 函数绘制数据的 matplotlib 子图。
标签: python pandas matplotlib seaborn