Visualizing Graffiti incidents in NYC using Carto

Preet Gangrade
5 min readFeb 8, 2021
Photo by Cem Ersozlu on Unsplash


Graffiti, as it’s known today, began in the late 1960s in Philadelphia. It was primarily used to make political statements and mark street gang territory. The history of Graffiti is not well known and different sources give different information about its evolution. However, most Graffiti writers (as they prefer themselves to be called), credit Taki 183 as being the mastermind behind this culture in New York. He worked as a messenger who travelled throughout the city. While he did so, he would use a marker and write his name wherever he went, at subway stations and also the insides and outsides of subway cars. Eventually, he became known throughout the city. As graffiti became associated with crime, many demanded that the government take a more serious stance towards it. By the 1980s, increased police surveillance and implementation of increased security measures (razor wire, guard dogs) combined with continuous efforts to clean it up led to the weakening of New York’s graffiti subculture. Here, I’ve visualised the Location and resolution of reported incidents of graffiti within NYC.


DSNY Graffiti Tracking (Map) — I found the data and a visualised map on NYC open data, however, I didn’t find the visualization appealing enough because it was hard for me as a first time user to conclude anything from it at first glance. Below is a picture of how the visualization looks like –

Based on DSNY Graffiti Tracking


CARTO | Unlock the power of spatial analysis — I used Carto to carry out the spatial analysis, the tool is easy to use and also it’s a web-based application, which makes things easier as I could just export the data from NYC open data to Carto with one click.

Data Set

DSNY Graffiti Tracking — This data was created when someone reports 311 about a graffiti cleaning claim or a graffiti taking place. The data set includes the longitude, latitude, reported date, police precinct, borough.


The first step of the process was to import the data set to Carto and this was super easy to do as the NYC open data website has an option to directly visualize the data in Carto. This option basically takes the data from NYC open data and imports it to Carto with just one click and creates a simple visualization. I started playing around with the base layer which was the map, the default map seemed boring hence I used the dark matter map.

The next step was to edit the visualization based on the data we have, I wanted to colorize the reports based on the boroughs they were in, hence I made sure in the styling option — I chose the point size to be fixed at 2.5 so that it doesn’t look cluttered. Point color was selected based on the value ie. boroughs. The background was chosen to be dark since the colour palette looks way more intriguing and understandable with the dark contrast.

The next step was to make sure the data is easier for a user to understand at first glance, hence I added a custom legend with the colors that represent each borough. Next, I added a pop up with details of the neighbourhood, police precinct, date reported and zip code.

In the end, I added another layer from Carto data library — NYC boroughs data. This layer was added above the base layer. There was no styling that was done for this layer since the visualization already looked divided into boroughs. However, I ran an Intersect and AggregateAnalysis with the base layer as NYC boroughs and the target layer as Graffiti tracking data, this analysis resulted with two new columns — as this data was analysed based on the count. The two new columns included “COUNT_VALS AND COUNT_VALS_DENSITY”.

Finally, I added a widget which indicated the total number of cases in each borough and helped users understand which borough has the most number of cases. The second widget was about the case if it’s been closed or it’s still pending. I added another widget which was a bar graph indicating the time series and the cases reported.

Styling/Analysis settings


Link to the Visualization in full screen — Graffiti Tracking — NYC


At first glance of the visualization, it’s clear that the data has been divided into boroughs with vibrant colors — the legend of the left top corner helps identify the borough name by color. However, it’s confusing to understand if Brooklyn has more cases or Manhattan. To make this clear, a widget on the right side indicates the total number of cases reported in each borough and they are placed based on the count.
Each pointer also has a pop up when clicked on it, this pop up gives out additional information on the neighbourhood, zip-code, police precinct and the date reported.
Adding the status of the report was also a good call as this gives us an idea of how many reports have actually been closed or they are still pending.
An interesting find was with the time series data — It’s been visualized in the form of bar graphs. I found out that the numbers have increased this year. A quick google search later helped me with an answer — “Due to City budget cuts related to COVID-19, the Graffiti Free NYC program has been suspended indefinitely.”

Graffiti tracking — NYC.

Reflection & Future Direction

Carto is a very powerful tool for map data visualization. It also allows the user to unlock the power of spatial analysis. It’s easy for a user to analyze multiple sets based on how they want to work with the visualization. CARTO VL simplifies the process for vector visualizations using a new, accessible styling language.

Further, I’d like to learn to animate the visualization with the date reported and do a reverse analysis to understand what led people to make graffitis over NYC. It would be interesting to understand if the reasoning behind it is political or something else.


NYC 311 — Graffiti, Litter, Noise Complaints- and most importantly if you can’t find your car. A local told me you ca… | How to find out, Numbers to call, Graffiti

DSNY Graffiti Tracking