Пожалуйста, не принимайте это как ответ (пока). Насколько я вижу, вы можете использовать разные цветовые гаммы с сюжетом. Но вы должны поработать над тем, как правильно показать все легенды
import plotly.graph_objects as go
import plotly.express as px
df = px.data.iris()
dfs = [d[1] for d in list(df.groupby('species'))]
fig = go.Figure()
fig.add_trace(
go.Scatter(x=dfs[0]["sepal_width"],
y=dfs[0]["sepal_length"],mode="markers",
marker=dict(color=dfs[0]["sepal_length"],
colorscale='Viridis',
showscale=True),
name=dfs[0]["species"].unique()[0],
showlegend=False
))
fig.add_trace(
go.Scatter(x=dfs[1]["sepal_width"],
y=dfs[1]["sepal_length"],mode="markers",
marker=dict(color=dfs[1]["sepal_length"],
colorscale='Magenta',
showscale=False),
name=dfs[1]["species"].unique()[0],
showlegend=False
))
fig.add_trace(
go.Scatter(x=dfs[2]["sepal_width"],
y=dfs[2]["sepal_length"],mode="markers",
marker=dict(color=dfs[2]["sepal_length"],
colorscale='Cividis',
showscale=False),
name=dfs[2]["species"].unique()[0],
showlegend=False
))