R ggplot2中的瀑布图似乎呈现不正确

R ggplot2中的瀑布图似乎呈现不正确,r,ggplot2,R,Ggplot2,我正在尝试重新创建瀑布图,如中所示 我正在从链接复制代码 balance <- data.frame(event = c("Starting\nCash", "Sales", "Refunds", "Payouts", "Court\nLosses", "Court\nWins", "Contracts", "End\nCash"), change = c(2000, 340

我正在尝试重新创建瀑布图,如中所示 我正在从链接复制代码

    balance <- data.frame(event = c("Starting\nCash", "Sales", "Refunds",
                                "Payouts", "Court\nLosses", "Court\nWins", "Contracts", "End\nCash"),
                      change = c(2000, 3400, -1100, -100, -6600, 3800, 1400, -2800))

    balance$balance <- cumsum(c(0, balance$change[-nrow(balance)]))
    balance$time <- 1:nrow(balance)
balance$flow <- factor(sign(balance$change))

ggplot(balance) +
  geom_hline(yintercept = 0, colour = "white", size = 2) +
  geom_rect(aes(fill= 'red'),xmin = time - 0.45, xmax = time + 0.45, ymin = balance, ymax = balance) 
                  geom_text(aes(x = time, y = pmin(balance, balance + change) - 50, label = dollar(change)),
                                          hjust = 0.5, vjust = 1, size = 3)

  scale_x_continuous( breaks = balance$time, labels = balance$event) +
                  scale_y_continuous("Balance") +
                  scale_fill_manual(values = c("-1" = "red", "1" = "black"))
余额

首先,您的xmin、xmax等应该在aes()中。我看到了很多小错误,比如美学不在
aes()中
geom_rect()
中,在
geom_rect()
geom_text()
之后缺少加号,以及
ymax
ymin
相同。此外,当您希望将
填充
映射到
因子(流)
时,可以指定固定的
填充
颜色。
ggplot(balance %>% 
           mutate(flow = factor(flow, labels = c("Negative", "Positive")))) +
  geom_hline(yintercept = 0, colour = "white", size = 2) +
    geom_rect(aes(fill= flow, xmin = time - 0.45, xmax = time+0.45, ymin = change, ymax = balance), 
              color = "black") +
geom_text(aes(x = time, y = pmin(balance, balance + change) - 50, label = change),
          hjust = 0.5, vjust = 1, size = 3) +
scale_x_continuous(breaks = balance$time, labels = balance$event) +
scale_y_continuous("Balance") +
scale_fill_manual(values = c("Negative" = "red", "Positive" = "green"))