I'm trying to make a scatter plot with 2 dropdown menus that select a data column (from a pandas data frame) to be plotted for x and y-axis, but I'm also wanting the points to be colored by a third categorical variable that is fixed (no dropdown needed for this one).
So far, I've been able to create the scatterplot correctly with functional dropdown menus thanks to another post, but I don't know how to colorize it by a third variable. Here's the code so far:
import pandas as pd
import numpy as np
import plotly.graph_objects as go
import plotly.express as px
df = px.data.tips().select_dtypes(['number']) # drop non numeric columns
fig = go.Figure(
go.Scatter(
x=df['total_bill'],
y=df['tip'],
hovertemplate='x: %{x} <br>y: %{y}',
mode="markers"))
fig.update_layout(
updatemenus=[
{
"buttons": [
{
"label": f"x - {x}",
"method": "update",
"args": [
{"x": [df[x]]},
{"xaxis": {"title": x}},
],
}
for x in cols
]
},
{
"buttons": [
{
"label": f"y - {x}",
"method": "update",
"args": [
{"y": [df[x]]},
{"yaxis": {"title": x}}
],
}
for x in cols
],
"y": 0.9,
},
],
margin={"l": 0, "r": 0, "t": 25, "b": 0},
height=700)
fig.show()
Ultimately, I want the same scatterplot, but for points to be colorized by "Category". I can do this using plotly express, but without dropdown menus very easily:
df = px.data.tips()
fig = px.scatter(df, x="total_bill", y="tip", color="smoker", trendline="ols")
fig.show()
Anyone has an idea of how I could achieve this?

