微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R ggplot2瀑布问题

如何解决R ggplot2瀑布问题

嗨,我遇到了错误

错误:将离散值提供给连续刻度

当我在下面执行时。遵循https://www.jigsawacademy.com/waterfall-charts-using-ggplot2-in-r/上的简单R瀑布教程。

想知道这是否已经过时,我想念一些简单的东西。

library(ggplot2)
library(dplyr)
balance <- data.frame(
  desc = c(
    "Starting Cash","Sales","refunds","Payouts","Court Losses","Court Wins","Contracts","End Cash"
  ),amount = c(2000,+3400,-1100,-100,-6600,3800,1400,2800)
)
balance$desc <- factor(balance$desc,levels = balance$desc)
balance$id <- seq_along(balance$amount)
balance$type <- ifelse(balance$amount > 0,"in","out")
balance[balance$desc %in% c("Starting Cash","End Cash"),+"type"] <-
  "net"
balance$end <- cumsum(balance$amount)
balance$end <- c(head(balance$end,-1),0)
balance$start <- c(0,head(balance$end,-1))
balance <- balance[,c(3,1,4,6,5,2)]

ggplot(balance,aes(desc,fill = type,x = desc)) + geom_rect(aes(
  xmin = id - 0.45,xmax = id + 0.45,ymin = end,ymax = start
))


Rstudio version 1.3.1073
R - version 4.0.2
ggplot2 - version 3.3.2

有什么想法吗?

谢谢

解决方法

对您的代码进行一些细微的更改,我得到了:

library(ggplot2)
library(dplyr)
#Data
balance <- data.frame(
  desc = c(
    "Starting Cash","Sales","Refunds","Payouts","Court Losses","Court Wins","Contracts","End Cash"
  ),amount = c(2000,+3400,-1100,-100,-6600,3800,1400,2800),stringsAsFactors = F
)
balance$desc <- factor(balance$desc,levels = balance$desc)
balance$id <- seq_along(balance$amount)
balance$type <- ifelse(balance$amount > 0,"in","out")
balance[balance$desc %in% c("Starting Cash","End Cash"),"type"] <- "net"
balance$end <- cumsum(balance$amount)
balance$end <- c(head(balance$end,-1),0)
balance$start <- c(0,head(balance$end,-1))
balance <- balance[,c(3,1,4,6,5,2)]
#Plot
ggplot(balance,aes(desc,fill = type)) + geom_rect(aes(
  x = desc,xmin = id - 0.45,xmax = id + 0.45,ymin = end,ymax = start
))

输出:

enter image description here

我按照您所提出问题的网页中的说明进行操作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。