As a Portland resident I was interested in getting a better understanding of budget and budget process. The city provides a number of valuable resources related to budget transparency and allows residents to provide testimony during the planning process. I found PDF documents containing tabular data and context about the currently adopted budget for 2022-23 and previous years, as well as the City Budget Office’s Dashboard showing the budget breakdown by department on tableau public which includes data for the current and previous 4 years.

However, I found that it was difficult to get a high level overview of how the budget was allocated across funds and departments. Inspired by OpenOakland’s excellent budget flow visualization, I decided to create a Sankey visualization of the Portland budget using the data from the the City Budget Office’s dashboard.

Portland’s operating budget is broken up into numerous “Funds”, with each fund having different sources of income and different restrictions on how assets are used. Most of these funds are largely non-discretionary, meaning that they can’t easily be re-allocated for different purposes. The General Fund is the most significant source of discretionary spending in the budget.

In the Adopted Budget document, the General Fund, Sewer System Operating Fund, Water Fund, and Transportation Operating Fund are broken out as “Major Funds”. In addition to these funds, there are a large number of smaller funds that cumulatively make up a large portion of the budget. I’ve grouped these funds under the “All Other Funds” category in order to make the visualization more readable.

The budget is allocated across high level spending categories, and then into specific administrative units. The resulting visualization looks like this:

Source: Portland Budget Visualization on Tableau Public.

Unfortunately, at the time I was working on this the Sankey chart pilot for Tablea had just ended, so I had to use a dashboard template instead of a native visualization. I expect that the chart type will be available in a full release of Tableau sometime in the future and I will revisit the project then.