An explorable budget visualization for the state of New York
This is based on Look at Cook by Derek Eder and Nick Rougeux at Open City, and can be easily re-deployed to visualize other budgets.
- jQuery
- D3 (for CSV manipulation)
- Backbone (javascript MVC framework)
- Highcharts (charting library)
- Datatables (sortable HTML tables)
The csv inputs that may need to be updated going forward are:
- the budget numbers (
data/budget_raw.csv
) - the budget descriptions (
data/descriptions.csv
)
A csv
and xlsx
file are typically shared with the same data. I've found that the csv
file sometimes has formatting issues, so I export the xlsx
file as a new budget_raw.csv
cleanup.py
is a python script that requires pandas and xlrd. You can install them by running:
pip install -r requirements.txt
When updating either of the above csvs, run the cleanup.py
script to generate the finished budget, budget_finished.csv
:
python cleanup.py
The settings in js/settings.js
that may need to be updated going forward are:
endYear
(for example, if the last year in the budget is '2023-24', set the end year to 2024)activeYear
(typically set to the same asendYear
)projectionStartYear
(for example, if the first year of estimates is '2023-24', set this to 2023)plotBandBuffer
(this determines the # months of padding for the beginning of the estimates plot band. if there are multiple years of estimates, set a small buffer like -1, otherwise set it to a larger negative number, e.g. -7, for more space)inflation_idx
(array of years and CPI values. typically we update the most recent years to track accurate inflation)benchmark
(set to the current year)
To preview changes locally:
python -m SimpleHTTPServer
Open a pull requst with the latest changes. This will create a deploy preview in netlify that you can share with the client for review.
The site is hosted on Netlify, so deploy previews are available if you make a pull request.
To deploy to production, push the changes into the deploy
branch:
git push origin main
git push origin main:deploy
Live changes will be seen at https://ny-budget.datamade.us
This code can be customized to visualize another data set.
####Data Prepatation The budget data must be a csv that adheres to a fixed format in order for the app to process it properly. Budget column headers include: Fund ID, Fund, Department ID, Department, Short Title, Link to Website, Department Description, and Control Officer. Values for estimates and actuals must be broken down into a separate column for each year.
See examples of prepped data:
If you need to do any preparation on your raw data to get it into the finished format (e.g. formatting dollar amounts, removing whitespace, adding descriptions), do it in a script so that it will be repeatable in the future. See an example script in data/cleanup.py
.
####Configuration
-
Put your finished budget csv file in the
data/
folder -
Next, set the configuration variables in
js/settings.js
- Cathy Deng, DataMade
- Derek Eder, DataMade
If something is not behaving intuitively, it is a bug, and should be reported as an issue
You can also email [email protected] or tweet @DataMadeCo.
- Fork the project.
- Make your feature addition or bug fix.
- Commit and send me a pull request. Bonus points for topic branches.
Copyright (c) 2016 DataMade. Released under the MIT License.