У меня есть следующий набор данных:
loads_ts_comb.head()
rte_nbr date perc_op_capacity is_overworked
0 35 2019-07-01 52.828054 NaN
1 35 2019-07-02 91.515837 NaN
2 35 2019-07-03 96.380090 NaN
3 35 2019-07-04 96.040724 NaN
4 35 2019-07-05 73.642534 NaN
loads_ts_comb.dtypes
rte_nbr int64
date datetime64[ns]
val1 float64
val2 float64
is_overworked
flag принимает значения 0/1 / NaN.
Используя seaborn, я хочу создать тепловую карту для perc_op_capacity
( с rte_nbr
как ось x и date
как ось y). Затем я хочу наложить диаграмму рассеяния для is_overworked
на тепловую карту (снова используя rte_nbr
как ось x и date
как ось y). Я пробовал сделать это:
## combine df
loads_ts_comb = loads_ts_comb.loc[(loads_ts_comb.date >= '2019-07-01') & (loads_ts_comb.date <= '2019-07-31')]
## get df for scatter plot
df_ts = loads_ts_comb.drop(columns='perc_op_capacity')
df_ts.sort_values(by=['rte_nbr','date'], ascending=[True, False], inplace=True)
df_ts = df_ts.reset_index().drop(columns='index')
## get df for heatmap
df_loads = loads_ts_comb.drop(columns='is_overworked')
df_loads.sort_values(by=['rte_nbr','date'], inplace=True)
df_loads_piv = df_loads.pivot(index="date", columns="rte_nbr")
df_loads_piv.index = df_loads_piv.index.date
df_loads_piv.columns = [col[1] for col in df_loads_piv.columns.values]
## plotting
fig, ax = plt.subplots(figsize=(20,10))
ax = sns.heatmap(df_loads_piv, ax = ax, robust=True, square=True, center=90, cmap='coolwarm',
cbar_kws={"shrink":.3, "label": "% operating capacity"})
ax = sns.stripplot(x="rte_nbr", y="date", hue='is_overworked', palette="Set3", size=10, data=df_ts, ax=ax)
ax.set_title('Percentage operating capacity by Route (x) and Date(y)', fontsize=16, fontdict={})
plt.xticks(fontsize="10")
plt.xlabel(xlabel='Route', fontsize=14)
plt.ylabel(ylabel='Date', fontsize=14)
#set labelsize of the colorbar
cbar = ax.collections[0].colorbar
cbar.ax.tick_params(labelsize=10)
plt.show()
Я перепробовал кучу вещей, но не могу заставить стрипплот наложиться на тепловую карту. Моя текущая тепловая карта выглядит так: