arnaudmiribel / streamlit-extras

Discover, try, install and share Streamlit re-usable bits we call "extras"!
https://extras.streamlit.app
Apache License 2.0
727 stars 124 forks source link

Add minispark #109

Closed arnaudmiribel closed 1 year ago

arnaudmiribel commented 1 year ago

Fun little addition to Altex to have mini charts

https://playground.streamlit.app?q=minispark

image

Code

import yfinance
import pandas as pd 
import yfinance as yf
from streamlit_extras.altex import sparkline_chart
import altair as alt 

msft = yf.Ticker("MSFT")
data = msft.history().reset_index()

def minispark(data: pd.DataFrame, x: str = "record_date:T", y: str = "cost") -> None:
    sparkline_chart(
        data=data,
        x=x,
        y=alt.Y(
            y + ":Q",
            scale=alt.Scale(domain=[data[y].min(), data[y].max()]),
        ),
        height=80,
    )

left, middle, right = st.columns(3)
with left:
    st.metric("Average Open", int(data["Open"].mean()))
    minispark(data, x="Date", y="Open")
with middle:
    st.metric("Average Close", int(data["Close"].mean()))
    minispark(data, x="Date", y="Close")
with right:
    st.metric("Average Volume", int(data["Volume"].mean()))
    minispark(data, x="Date", y="Open")