Fine Amount
Payment Amount by Borough
payment_by_borough <- violation %>% filter(payment_amount != 0)
fig1 <- plot_ly(payment_by_borough, x = ~payment_amount, color = ~borough, type = "box", colors = "viridis")
fig1 %>% layout(yaxis = list(showticklabels = FALSE),
               title = "<b>Payment by Borough</b>",
                xaxis = list(title = "Payment Amount"))

We see that the median payment amount is approximately the same across the five boroughs, around $60-65. However, it seems that the payment amount distributions in the Bronx, Brooklyn, and Manhattan all have a significant right skew. This likely just indicates that the violation types that are more frequent than others are different across the boroughs.

Payment Amount by Violation
payment_by_violation <- violation %>% filter(payment_amount != 0)
fig2 <- plot_ly(payment_by_violation, x = ~payment_amount, color = ~violation, type = "box", colors = "viridis")
fig2 %>% layout(yaxis = list(showticklabels = FALSE),
                title = "<b>Payment Amount by Violation Type</b>",
                xaxis = list(title = "Payment Amount"))

We see that the distribution of payment amounts can vary significantly between violation types.

Fire Hydrant Violation Payment Amount by Borough
fire_hydrant_violation_payment <- violation %>% filter(payment_amount != 0, violation == "FIRE HYDRANT")
fig3 <- plot_ly(fire_hydrant_violation_payment, x = ~payment_amount, color = ~borough, type = "box", colors = "viridis")
fig3 %>% layout(yaxis = list(showticklabels = FALSE),
                title = "<b>Fire Hydrant Payment Amount by Borough</b>",
                xaxis = list(title = "Payment Amount"))

Finally, we see here that the distribution of fire hydrant payment amounts is about the same across the five boroughs. It appears that most recipients of this violation will pay at most $115.