https://github.com/datamade/ny-budget
:bar_chart: an explorable budget vizualization for New York state
https://github.com/datamade/ny-budget
Last synced: about 1 year ago
JSON representation
:bar_chart: an explorable budget vizualization for New York state
- Host: GitHub
- URL: https://github.com/datamade/ny-budget
- Owner: datamade
- License: other
- Created: 2014-12-22T17:36:05.000Z (over 11 years ago)
- Default Branch: main
- Last Pushed: 2025-01-21T20:34:16.000Z (over 1 year ago)
- Last Synced: 2025-03-24T16:37:31.655Z (over 1 year ago)
- Language: JavaScript
- Homepage: https://ny-budget.datamade.us
- Size: 20.5 MB
- Stars: 29
- Watchers: 4
- Forks: 11
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
ny-budget
=========
An explorable budget visualization for the state of New York

This is based on [Look at Cook](http://lookatcook.com) by Derek Eder and Nick Rougeux at [Open City](http://opencityapps.org), and can be easily re-deployed to visualize other budgets.
#### Dependencies
- [jQuery](http://jquery.com)
- [D3](http://d3js.org) (for CSV manipulation)
- [Backbone](http://backbonejs.org/) (javascript MVC framework)
- [Highcharts](http://www.highcharts.com/) (charting library)
- [Datatables](http://datatables.net) (sortable HTML tables)
## How to update this New York visualization
#### 1. Update Data
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
```
#### 2. Update settings
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 as `endYear`)
- ```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)
#### 3. Preview
To preview changes locally:
```
python -m SimpleHTTPServer
```
#### 4. Share preview with client
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.
#### 4. Deploy
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:
```bash
git push origin main
git push origin main:deploy
```
Live changes will be seen at https://ny-budget.datamade.us
## How to adapt this to another budget
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:
- [New Orleans](https://docs.google.com/spreadsheet/ccc?key=0AswuyKhD7LxVdGlERGdEckpaRDc4Q1RCN0tjZ2tMMGc&usp=sharing_eil#gid=0)
- [Cook County](https://www.google.com/fusiontables/DataSource?dsrcid=1227404)
- [Macoupin County](https://github.com/datamade/macoupin-budget/blob/master/data/macoupin-budget_1997-2014.csv)
- [A blank template to populate](https://docs.google.com/spreadsheets/d/1I6xZe8syHTiLguZ56l6J1KW0nAJVrUilvq0eP-BpE2A/edit?usp=sharing)
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
1. Put your finished budget csv file in the ```data/``` folder
2. Next, set the configuration variables in ```js/settings.js```
## Team
* Cathy Deng, DataMade
* Derek Eder, DataMade
## Errors / bugs
If something is not behaving intuitively, it is a bug, and should be [reported as an issue](https://github.com/datamade/ny-budget/issues)
You can also email info@datamade.us or tweet @DataMadeCo.
## Note on patches/pull requests
* Fork the project.
* Make your feature addition or bug fix.
* Commit and send me a pull request. Bonus points for topic branches.
## Copyright and Attribution
Copyright (c) 2016 DataMade. Released under the [MIT License](https://github.com/datamade/ny-budget/blob/master/LICENSE).