Set a common reasonable scale to display heat map suplots with a single legend

307 views Asked by At

I am using geoplot's kdeplot function to display Kernel Density maps (aka heatmaps), for different periods of time.

I have a code that looks like this:

fig, axs = plt.subplots(n_rows, n_cols, figsize=(20,10))

for ax, t in zipped(axs.flatten(), periods):
    # df is a GeoPandas dataframe
    data = df.loc[(df['period'] == t), ['id', 'geometry']]
    # heatmap plot
    gplt.kdeplot(
        data,
        clip=africa.geometry,
        cmap='Reds',
        shade=True,
        cbar=True,
        ax=ax)
    gplt.polyplot(africa, ax=ax, zorder=1)
    ax.set_title(int(t))

It outputs the following image

heatmaps subplots with legend

i would like instead to be able to define a common scale for my entire dataset (regardless of the time), which I can then use in kdeplot and as a unique legend for my subplots.

I know that my data have different density in different years, but I am trying to find a sort of common values that can be used for each of them.

I thought the levels parameter would be what I am looking for (i.e. using the same iso-proportions of the density for my periods, e.g. [0.2,0.4,0.6,0.8,1]).

However, when I use it in combination with cbar=True to display the legends, the values of each legend is different from the other legends (and from the levels vector).

Am I doing something wrong?

If not, do I need to manually set the cbar?

heatmaps subplots with legend and levels

0

There are 0 answers