How can I set cmap for st.scatter_chart? Instead of a gradient (white to blue), I’d prefer to use discrete colors to distinguish.
i posted this in Discord also
How can I set cmap for st.scatter_chart? Instead of a gradient (white to blue), I’d prefer to use discrete colors to distinguish.
i posted this in Discord also
If you have a categorical column, you can pass that as the colors argument and each point will have a distinct color based on that column.
import streamlit as st
import pandas as pd
df = pd.DataFrame(
{
"A": [1, 2, 3, 4, 5],
"B": ["a", "b", "c", "b", "a"],
"C": [2, 4, 8, 16, 32],
}
)
st.scatter_chart(df, x="A", y="C", color="B")
If you want to use a specific color pallet, you can use altair directly, rather than using st.scatter_chart. Here is the list of color pallets available for categorical values Color Schemes | Vega
import altair as alt
schemes = ["category10", "accent", "dark2", "paired", "pastel1", "set1", "set2", "set3"]
scheme = st.selectbox("Color scheme", schemes)
chart = (
alt.Chart(df)
.mark_circle(size=100)
.encode(
x="A",
y="C",
color=alt.Color("B:N", scale=alt.Scale(scheme=scheme)),
)
)
st.altair_chart(chart, use_container_width=True)
You can also use a different plotting library of your choice.
Thank you very much.
The second solution is exactly what i needed.
I appreciate your support
This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.