基于色调颜色连接 seaborn 散点图上的标记

Connecting markers on seaborn scatterplot based on the hue color

所以我开始使用 seaborn 处理视觉效果,但我 运行 遇到了一个我无法解决的问题。基本上我有 2 列(开始日期和结束日期),我想根据我的色调 link 放在一起。附上当前图表,理想的最终结果将具有相同的色调 link 通过它们之间的一条线。 这是我到目前为止为制作这些情节所写的内容:

sns.scatterplot(data=df, y=df.index, x='Start_Date', hue='Conf_Num', legend=False)
sns.scatterplot(data=df, y=df.index, x='End_Date', hue='Conf_Num', legend=False)

示例数据 | Conf_Num | Start_Date | End_Date | | :--------| :------------: |------------:| | 0 | 2/8/2021 | 2021 年 3 月 1 日 | | 1 | 2/15/2021 | 12/31/2021| | 2 | 2021 年 3 月 1 日 | 2021 年 8 月 29 日 |

感谢任何帮助或指导。

可能不得不诉诸 matplotlib 而不是 seaborn。这是一个例子:

测试数据

df = pd.DataFrame(
    {
        "x":np.random.randint(10, size=10),
        "y":np.random.randint(10, size=10),
        "hue":[str(int(i/2)) for i in range(10)],
    }
)

剧情代码

_, ax = plt.subplots()

# choose a palette you like https://seaborn.pydata.org/tutorial/color_palettes.html
cmap = sns.color_palette("flare", n_colors=df["hue"].nunique())

for hue, color in zip(df["hue"].unique(), cmap):
    temp_df = df[df["hue"]==hue]
    ax.plot(temp_df["x"], temp_df["y"], marker="o", color=color)

从图中恢复点色调数据的替代方法(做出一些可能有风险的假设)

测试数据

df = pd.DataFrame(
    {
        "x":np.random.randint(10, size=10),
        "y":np.random.randint(10, size=10),
        "hue":[str(int(i/2)) for i in range(10)],
    }
)

剧情代码

ax = sns.scatterplot(data = df, x="x", y="y", hue="hue", cmap="bright")

pc = ax.collections[0]
point_data = pd.DataFrame(pc.get_offsets().data, columns=["x", "y"])
point_data["hue"] = pd.Series([tuple(arr) for arr in ax.collections[0].get_facecolor()])

for hue,  df_ in point_data.groupby("hue"):
    ax.plot(df_["x"], df_["y"], color=hue)