Python/Matplotlib - 为同一图形上的多个散点图设置颜色条

Python/Matplotlib - Set Colorbar for multiple scatter plots on same figure

我正在使用 Python 和 Matplotlib 向图形添加可变数量的散点图。每个散点图都是一个系列,我想通过它们的序列索引号为每个散点图的点着色。但是,由于我的序列长度不同,我希望所有序列都使用 1 个一致的颜色条。

我可以跟踪最小和最大序列长度。但是我如何使用这些信息来配置颜色条来表示这个完整的范围?

从这个问题来看,数据的样子并不完全清楚。 这是一个使用 4 个不同长度系列的示例,所有系列都有一个索引 0,1,2,3,...。散点图绘制了指数与值的关系,并使用完整的颜色范围为每个系列着色。

建议为每个系列添加一个颜色条,前提是颜色条不要太多。每个颜色条都有一个标题,并根据该系列使用的范围显示刻度。使颜色条(第一个除外)非常窄,使它们看起来像一把额外的斧头。

import numpy as np
import pandas as pd
from matplotlib import pyplot as plt

N = 4
series_to_plot = [pd.Series(np.random.uniform(i, i + 0.8, np.random.randint(50, 400))) for i in range(1, N + 1)]
names = [f'data{i}' for i in range(1, N + 1)]

fig, ax = plt.subplots(figsize=(12, 5))
for ind, (ser, name) in enumerate(zip(series_to_plot, names)):
    scat = ax.scatter(ser.index, ser, c=ser.index, s=1, cmap='plasma')
    cax = fig.add_axes(
        [1 - (N - ind) * 0.05, 0.1, 0.01 if ind == 0 else 0.002, 0.75])  # left, bottom, width, height, where 1,1 is top right of the fig
    cbar = fig.colorbar(scat, cax=cax)
    cax.set_title(name)

plt.subplots_adjust(right=0.97 - N * 0.05)  # make room for the colorbars
plt.show()