A dot plot places values on a shared quantitative scale so comparisons are easier to see than in a table. For NBA payroll analysis, one form ranks each team by payroll and colors its dot by season-ending result; a Cleveland dot plot places two standardized measures for each team on the same scale and joins them with a line. section 10.4 section 11.4
Build a ranked payroll dot plot by:
- Create a temporary data set containing team names, one season’s payroll column, and the season-ending classification; omit missing values before plotting. section 10.4.2
- Map payroll to the x-axis and reorder team names by payroll on the y-axis, producing a descending team ranking. section 10.4.2
- Map the three outcome categories—no playoffs, made playoffs, and won title—to dot colors, then place the legend beneath the chart. section 10.4.2
- Format payroll labels as abbreviated dollar amounts and rotate them for readability; enlarge dots to make the points easier to inspect. section 10.4.2
Comparing payrolls with wins
A Cleveland dot plot compares inflation-adjusted payrolls and regular-season wins across all 30 teams from 2000–17. Both measures are converted to z-scores before plotting. For each team, a segment runs from the payroll dot to the wins dot: its length shows how closely investment and return align, while its direction shows whether wins lie above or below payroll on the standardized scale. In the displayed counts, 17 teams have wins above payroll and 13 have payroll above wins. section 11.4.2 section 11.4.2
p1 <- ggplot(final) +
geom_segment(aes(x = Team, xend = Team,
y = zSalaries, yend = zWins), color = "grey50") +
geom_point(aes(x = Team, y = zSalaries), color = "springgreen3",
size = 3) +
geom_point(aes(x = Team, y = zWins), color = "darkred", size = 3) +
labs(title = "Inflation-Adjusted Payrolls vs. Regular Season Wins",
subtitle = "2000-17",
x = "",
y = "Standard Deviations",
caption = "green/light = salaries\nred/dark = wins") +
theme(plot.title = element_text(face = "bold")) +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
print(p1)
This ggplot2 listing shows the Cleveland-dot-plot structure: one segment per team and separate point layers for standardized salaries and wins. section 11.4.2
Interpret dots as visual evidence, not proof of causation. Ranked payroll plots suggest that the highest-payroll teams usually reach the playoffs and that the lowest-payroll teams usually miss them; the Cleveland plot adds a team-level view of payroll-to-win alignment. Pair such charts with other evidence when drawing conclusions. section 10.5 section 11.6
