- What is this resource?
- Learner Personas
- How to use this resource?
- Who created this resource?
- Introduction to the team
- What is Plotly and Dash?
- Acknowledgements
- checklist of things they need
- install stack
- Summary and overview of this part
- Learning Intentions
- Sample Dashboards
- Theory on Dashboards
- Principles of effective dashboard design
- Usability and Accessibility of Dashboards
- Web app versus dashboard
- Structure of a Dash app
- Installation and setup
- Create your first Dash app
- Live updates and debugging
- how to stop your app (and why you should) (Ctrl+C)
- how to update your app (Ctrl+C and then re-run)
- how to turn on "live updating" (with debug=True) and what this means (i.e. what happens if you have a syntax error and your app crashes)
- What you will Learn
- Dash Components
- Markdown
- Button
- Dropdown
- Checkbox
- Slider
- Graph
- Design App layout
- Container: Dash Bootstrap Components
- Row and Col: Dash Bootstrap Components
- Introduction to decorators in Python
- Callback decorators in Dash
- Input
- Output
- Component_id
- Component_property
- Setting up a callback
- Dropdown and Graph
- Slider and Graph
- Basic deployment to Heroku
- Summary and overview of this part
- Learning Intentions
- From excel or csv to pandas df
- Loading a dataframe from a URL
- Creating our own pandas df
- Using data from an API
- "do wrangling inside app" --> show that it is slow
- "do wrangling separately in py files" --> show that it's faster
- Case Study: Select a dataset
- Basic operations with pandas
- Cleaning, processing, wrangling
- Preprocessing files
- Principles of Effective Visualizations
- Introduction to Plotly Express
- Plotly Express graphs
- scatter plot
- line plot
- bar plot
- etc...
- Incorporting PX graphs in a Dash app
- References and resourcres
- Intro to the DataTable: creating a basic DataTable
- Linking dataTable to graph
- Editing the DataTable
- Other importnat DataTable props
- Summary and overview of this part
- Learning Intentions
- States
- Multiple buttons: callback_context
- Multiple outputs and inputs
- Advanced DBC
- Advanced DCC
- RangeSlider
- Datepicker
- Interval
- Store
- Creating a layout component inside a callback
- More Dash Bootstrap Components
- Sytling app with Dash Bootstrap Components
- Callback graphs to asses speed
- Actions to improve app speed
- Sharing data between callbacks(?)
- Efficiency
-
Why separate into multiple pages?
- Advantages of multi-page apps (lower load times, less processing, more modular pages, more focused content, easier to collaborate in teams)
- Disadvantages of multi-page apps (increased maintenance effort/time, complex structure, potentially some repeated code, etc...)
-
Structure of Multi-page Apps
- Storyboarding and building out pages
- File and folder layouts
- Registering pages
- Callbacks
- building out the app.py file
- A few words on what multipage layouts are possible
- Building multi-page app examples
-
- Layouts with control panels and graphs
- Template 1: Controls-left, Graph-right
- Template 2: Controls-bottom, Graph-top
- Layouts with navigation panels and Graphs
- Template 1: Navigaton-right, Graph-left
- Template 2: Navigaton-top, Graph-bottom
- Cpmbining nnavigation and control panels
- Template 1:
- Template 2:
- Layouts with control panels and graphs
-
Case Study 1
-
Case Study 2
- What you will learn in this part
- Learning Intentions
- Components of deployment
- Procfile
- requirements.txt
- Dockerfile
- Heroku build pipeline
- Deploying to Pythoanywhere ? (Optional)
- Testing
- Setting up a pipeline
- Github Actions