#r #ggplot2 #graph #waterfall
#r #ggplot2 #График #водопад
Вопрос:
Привет, я получаю сообщение об ошибке
Ошибка: дискретное значение, переданное в непрерывную шкалу
когда я выполняю ниже. Следуя простому руководству по водопаду R наhttps://www.jigsawacademy.com/waterfall-charts-using-ggplot2-in-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
Есть идеи?
Спасибо
Ответ №1:
Внося эти небольшие изменения в ваш код, я получил это:
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
))
Вывод:
Я следовал указаниям на веб-странице, которую вы включили в свой вопрос.
Комментарии:
1. Спасибо за это. Как ни странно, при заводской установке R stringAsFactors по умолчанию используется значение False, которое должно заставить это работать.
2. @Sam,
stringAsFactors
значение по умолчанию изменилось с True на False, когда R перешел с версии 3.x на 4.x