Streamlit
1 Introduction to Streamlit
1.1 What is Streamlit?
1.2 Why use Streamlit?
1.3 Setting up the environment
1.4 Creating your first Streamlit app
2 Basic Components
2.1 Text elements
2.1 1 Displaying text
2.1 2 Formatting text
2.2 Data display elements
2.2 1 Displaying data frames
2.2 2 Displaying tables
2.3 Input widgets
2.3 1 Text input
2.3 2 Number input
2.3 3 Date input
2.3 4 Dropdown selection
2.3 5 Slider
2.3 6 Checkbox
2.3 7 Radio buttons
2.3 8 Buttons
3 Advanced Components
3.1 Interactive widgets
3.1 1 Multiselect
3.1 2 File uploader
3.1 3 Color picker
3.2 Media elements
3.2 1 Displaying images
3.2 2 Displaying videos
3.2 3 Displaying audio
3.3 Chart elements
3.3 1 Line chart
3.3 2 Bar chart
3.3 3 Area chart
3.3 4 Scatter chart
3.3 5 Map chart
4 Layout and Styling
4.1 Layout components
4.1 1 Columns
4.1 2 Tabs
4.1 3 Expander
4.2 Styling elements
4.2 1 Custom CSS
4.2 2 Theming
4.2 3 Adding custom fonts
5 State Management
5.1 Session state
5.1 1 Managing state across reruns
5.1 2 Persisting state
5.2 Caching
5.2 1 Caching functions
5.2 2 Caching data
6 Deployment
6.1 Deploying to Streamlit Sharing
6.1 1 Setting up Streamlit Sharing
6.1 2 Deploying your app
6.2 Deploying to other platforms
6.2 1 Deploying to Heroku
6.2 2 Deploying to AWS
6.2 3 Deploying to Google Cloud
7 Best Practices
7.1 Writing clean and maintainable code
7.2 Optimizing performance
7.3 Handling errors and exceptions
7.4 Version control with Git
8 Advanced Topics
8.1 Integrating with other libraries
8.1 1 Integrating with Pandas
8.1 2 Integrating with Plotly
8.1 3 Integrating with TensorFlow
8.2 Building complex apps
8.2 1 Creating multi-page apps
8.2 2 Handling authentication
8.2 3 Building interactive dashboards
8.3 Custom components
8.3 1 Creating custom widgets
8.3 2 Extending Streamlit with custom components
9 Case Studies
9.1 Building a data exploration app
9.2 Building a machine learning model deployment app
9.3 Building a real-time data visualization app
4 Layout and Styling Explained

Layout and Styling Explained

Key Concepts

Columns

Columns in Streamlit allow you to organize content into vertical sections. This is particularly useful for creating complex layouts where different types of content need to be displayed side by side.

import streamlit as st

col1, col2 = st.columns(2)

with col1:
    st.write("This is column 1")

with col2:
    st.write("This is column 2")
    

Sidebar

The sidebar in Streamlit is a dedicated area for navigation or supplementary content. It is often used for filters, settings, or navigation links that do not need to be in the main content area.

import streamlit as st

st.sidebar.title("Navigation")
page = st.sidebar.selectbox("Choose a page", ["Home", "About", "Contact"])

if page == "Home":
    st.write("Welcome to the Home page")
elif page == "About":
    st.write("This is the About page")
else:
    st.write("Contact us here")
    

Container

A container in Streamlit is a wrapper that groups elements together. This can be useful for applying styles or logic to a group of elements without affecting the rest of the page.

import streamlit as st

container = st.container()

with container:
    st.write("This is inside the container")
    st.button("Click me")
    

Styling

Styling in Streamlit allows you to customize the appearance of elements. This can be done using CSS, which can be embedded directly in the Streamlit app or linked from an external stylesheet.

import streamlit as st

st.markdown(
    """
    
    """,
    unsafe_allow_html=True
)

st.markdown('

This text is styled

', unsafe_allow_html=True)

Examples

Example 1: Using Columns

import streamlit as st

col1, col2, col3 = st.columns(3)

with col1:
    st.write("Column 1")

with col2:
    st.write("Column 2")

with col3:
    st.write("Column 3")
    

Example 2: Using Sidebar

import streamlit as st

st.sidebar.title("Settings")
option = st.sidebar.radio("Choose an option", ["Option 1", "Option 2"])

if option == "Option 1":
    st.write("You selected Option 1")
else:
    st.write("You selected Option 2")
    

Example 3: Using Container

import streamlit as st

container = st.container()

with container:
    st.write("This is inside the container")
    st.button("Click me")

st.write("This is outside the container")
    

Example 4: Applying Styling

import streamlit as st

st.markdown(
    """
    
    """,
    unsafe_allow_html=True
)

st.markdown('', unsafe_allow_html=True)
    

Analogies

Think of columns as lanes on a highway, each carrying different types of traffic. The sidebar is like a service road that runs parallel to the main road, providing additional options. A container is like a box that holds items together, and styling is like painting or decorating the box to make it look attractive.

By mastering layout and styling in Streamlit, you can create visually appealing and organized web applications that enhance user experience.