Skip to content

andfanilo/streamlit-d3-demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

D3 Demo in Streamlit

An example project for a custom D3 chart with React hooks into Streamlit.

  • Dynamic line chart
  • Overlapping scatter plot, with customizable size/color
  • Interactive tooltip
  • TODO : Select a circle and return it's value
  • TODO : Zoom/Pan ?

Feel free to fork this project as a starter for your own D3 components.

Install

pip install streamlit-d3-demo

Example Usage

import random
from streamlit_d3_demo import d3_line

def generate_random_data(x_r, y_r):
    return list(zip(range(x_r), [random.randint(0, y_r) for _ in range(x_r)]))

d3_line(generate_random_data(20, 500), circle_radius=15, circle_color="#6495ed")

Development

Install

  • JS side
cd frontend
npm install
  • Python side
conda create -n streamlit-d3 python=3.7
conda activate streamlit-d3
pip install -e .

Run

Both JS and Python should run at the same time.

  • JS side
cd frontend
npm run start
  • Python side
streamlit run app.py

References

D3 :

React :

D3 + React hooks :

D3 + React class component :