This repository includes two example dashboards exploring recent shootings in Philadelphia, using the City of Philadelphia's open data on shooting victims.
Each dashboard includes a slider widget that allows the user to specify how many days into the past to display.
This dashboard includes:
- an Altair bar chart showing the top 20 neighborhoods with the most shootings
- a choropleth map (made with hvplot) that shows the number of shootings per neighborhood.
The app can be launched on Binder using the "Launch Binder App" button below. The notebook can be viewed on Binder using the "Launch Binder Notebook" button.
This dashboard includes:
- an Altair bar chart showing a histogram of the age of shooting victims, colored by fatal vs. non-fatal shootings
- a Folium heatmap of the shootings across the city
- an hvplot line chart showing the daily number of shootings, which can be filtered to view data for a specific time period
The app can be launched on Binder using the "Launch Binder App" button below. The notebook can be viewed on Binder using the "Launch Binder Notebook" button.
The app has also been deployed on Heroku: https://philadelphia-shootings.herokuapp.com/
Heroku makes deployment of arbitrary apps including Panel apps and dashboards very easy and provides a free tier to get you started. This makes it a great starting point for users not too familiar with web development and deployment.
To get started working with Heroku signup for a free account and download and install the CLI. Once you are set up follow the instructions to log into the CLI.
-
Add a "requirements.txt" file to your dashboard's repository that includes all of the requirements for your project. These will be installed using
pip
on Heroku. -
Add a
Procfile
file to your repository, which declares which command Heroku should run to serve the app. In this repository, the following command serves theapp2.ipynb
example and the websocket origin should match the name of the app on Herokuapp-name.herokuapp.com
which you will declare in the next step:
web: panel serve --address="0.0.0.0" --port=$PORT app2.ipynb --allow-websocket-origin=app-name.herokuapp.com
In this repository, I have specified "app-name" as "philadelphia-shootings" but you should replace your "app-name" with whatever you want yours to be.
- Create a heroku app using the CLI ensuring that the name matches the URL we declared in the previous step:
heroku create app-name
Again, "app-name" should be whatever you chose in the last step.
- Push the app to heroku and wait until it is deployed. From the main folder of your repository, run the following command from the command line:
git push heroku master
- Visit the app at app-name.herokuapp.com