davidsjoberg / ggsankey

Make sankey, alluvial and sankey bump plots in ggplot
Other
268 stars 32 forks source link

"sum_" function missing for geom_sankey_bump() #3

Closed engineerchange closed 3 years ago

engineerchange commented 3 years ago

Following the sum_ issue reported in #1, I have the same issue with the example provided in the readme.

I tried:

library(ggsankey)
library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union
library(ggplot2)
library(gapminder)

df <- gapminder %>%
    group_by(continent, year) %>%
    summarise(gdp = (sum_(pop * gdpPercap)/1e9) %>% round(0), .groups = "keep") %>%
    ungroup()
#> Error: Problem with `summarise()` input `gdp`.
#> x could not find function "sum_"
#> ℹ Input `gdp` is `(sum_(pop * gdpPercap)/1e+09) %>% round(0)`.
#> ℹ The error occurred in group 1: continent = "Africa", year = 1952.

ggplot(df, aes(x = year,
               node = continent,
               fill = continent,
               value = gdp)) +
    geom_sankey_bump(space = 0, type = "alluvial", color = "transparent", smooth = 6) +
    scale_fill_viridis_d(option = "A", alpha = .8) +
    theme_sankey_bump(base_size = 16) +
    labs(x = NULL,
         y = "GDP ($ bn)",
         fill = NULL,
         color = NULL) +
    theme(legend.position = "bottom") +
    labs(title = "GDP development per continent")
#> Error:   You're passing a function as global data.
#>   Have you misspelled the `data` argument in `ggplot()`

Created on 2021-04-03 by the reprex package (v1.0.0)

I also tried removing sum_ and replacing with sum when writing to the variable df, but I also had no luck.

See here:

df <- gapminder %>%
  group_by(continent, year) %>%
  summarise(gdp = (sum(pop * gdpPercap)/1e9) %>% round(0), .groups = "keep") %>%
  ungroup()

ggplot(df, aes(x = year,
               node = continent,
               fill = continent,
               value = gdp)) +
  geom_sankey_bump(space = 0, type = "alluvial", color = "transparent", smooth = 6) +
  scale_fill_viridis_d(option = "A", alpha = .8) +
  theme_sankey_bump(base_size = 16) +
  labs(x = NULL,
       y = "GDP ($ bn)",
       fill = NULL,
       color = NULL) +
  theme(legend.position = "bottom") +
  labs(title = "GDP development per continent")

My console error is different than reprex's for some reason; this is my console error:

Error: Problem with `summarise()` input `flow_freq`.
x could not find function "sum_"
ℹ Input `flow_freq` is `sum_(value)`.
ℹ The error occurred in group 1: n_x = 1952, node = "Oceania 1952", n_next_x = 1957, next_node = "Oceania 1957".
chalg commented 3 years ago

Was about the raise the same issue.

davidsjoberg commented 3 years ago

Thanks! It was problem with my use of my own sum_ function from hablar ;) Now I've removed that dependency and it should work fine!