Skip to content

Instantly share code, notes, and snippets.

View treuille's full-sized avatar

Adrien Treuille treuille

View GitHub Profile
@treuille
treuille / matplotlib_animation.py
Created October 4, 2019 16:47
Answer: Animating a Matplotlib chart
import matplotlib.pyplot as plt
import numpy as np
import streamlit as st
import time
fig, ax = plt.subplots()
max_x = 5
max_rand = 10
@treuille
treuille / powers_in_dash.py
Last active July 10, 2020 13:15
Comparing Dash and Streamlit
import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
app.layout = html.Div([
@treuille
treuille / display_dataframe_quickly.py
Created October 19, 2019 03:04
Workaround: Displaying a dataframe quickly by slicing it.
import streamlit as st
import pandas as pd
import numpy as np
def display_dataframe_quickly(df, max_rows=5000, **st_dataframe_kwargs):
"""Display a subset of a DataFrame or Numpy Array to speed up app renders.
Parameters
----------
df : DataFrame | ndarray
@treuille
treuille / latex.py
Last active November 11, 2019 16:22
Workaround: Rendering LaTeX in Streamlit
import streamlit as st
from io import BytesIO
import matplotlib.pyplot as plt
def render_latex(formula, fontsize=12, dpi=300):
"""Renders LaTeX formula into Streamlit."""
fig = plt.figure()
text = fig.text(0, 0, '$%s$' % formula, fontsize=fontsize)
fig.savefig(BytesIO(), dpi=dpi) # triggers rendering
@treuille
treuille / colored_deck_gl.py
Created October 30, 2019 23:13
Answer: Adding color to a DeckGL 'ScatterplotLayer' in Streamlit
import streamlit as st
import pandas as pd
import numpy as np
n_points = 1000
sf_lat, sf_lon = 37.76, -122.4
map_data = pd.DataFrame({
'lat': np.random.randn(n_points) / 50 + sf_lat,
'lon': np.random.randn(n_points) / 50 + sf_lon,
'colorR': np.random.uniform(size=n_points, high=255.0),
@treuille
treuille / partial_cache.py
Created October 19, 2019 16:28
Workaround: Partial Caching
import streamlit as st
import functools
def partial_cache(func=None, **cache_kwargs):
"""Like st.cache, but if the function returns None, then nothing is cached.
Parameters
----------
func : Callable
@treuille
treuille / image_paginator.py
Created October 2, 2019 19:44
Answer: Applying paginator to images
import streamlit as st
import itertools
def paginator(label, items, items_per_page=10, on_sidebar=True):
"""Lets the user paginate a set of items.
Parameters
----------
label : str
The label to display over the pagination widget.
@treuille
treuille / answer_100000_rows.py
Created October 2, 2019 17:05
Answer: Rendering a DataFrame with 100,000 rows
import streamlit as st
import pandas as pd
DATA_BUCKET = "http://s3-us-west-2.amazonaws.com/streamlit-demo-data/"
DATA_URL = DATA_BUCKET + "uber-raw-data-sep14.csv.gz"
read_and_cache_csv = st.cache(pd.read_csv)
data = read_and_cache_csv(DATA_URL, nrows=100000)
st.write('Data', data)
@treuille
treuille / pave_bug.py
Created September 25, 2019 00:03
Trying to reproduce Pavel's bug...
import streamlit as st
import pandas as pd
with st.echo():
@st.cache(ignore_hash=True)
def load_cached():
csv = pd.read_csv("http://s3-us-west-2.amazonaws.com/streamlit-demo-data/uber-raw-data-sep14.csv.gz", nrows=100000)
return csv
df = load_cached()
@treuille
treuille / deck_gl_example.py
Last active September 23, 2019 23:54
DeckGL Example
# -*- coding: utf-8 -*-
# Copyright 2018-2019 Streamlit Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software