проблема вызвана x = Capex
в geom_text(aes(x = Capex, ...))
. Вероятно, вы хотите, чтобы ggplot рисовал тексты посередине поверх geom_rects - это можно сделать так:
df <- data.frame(Project = c("one", "two", "three", "four", "five", "six"), Capex = c(4000, 4000, 1000,2000,10000,1000))
df$w <- cumsum(df$Capex)
df$wm <- df$w - df$Capex
df$Emissions<- with(df, wm + (w - wm)/2)
p <- ggplot(df) +
geom_rect(aes(ymin = 0, xmin = wm, xmax = w, ymax = Emissions, fill = Project)) +
geom_text(aes(x = wm + Capex/2, y = Emissions, label = Project), size = 4, nudge_y = 180) +
labs(title = "Abatement Curve", x = "Capex", y = "Capital Efficiency")
С x = wm + Capex/2
я передаю горизонтальный центр каждого geom_rect как x- позиция для текстов.