R - Error in using the package ggmosaic

2.4k views Asked by At

I'm using the new package ggmosaic to draw mosaic plots with ggplot2.

I have an error "Computation failed in stat_mosaic()" for just one of the variable from the dataset that I use. The problem seems located around the content of the variable, and more precisely around the treatment of ] because it works when I replace it by another symbol like ).

A simple example :

# Parameters
library(ggplot2)
library(ggmosaic)
set.separators(c(":", ";", "|")) # cf. ggmosaic documentation

# Plot OK
ggplot(data = df) +
  geom_mosaic(aes(weight = 1, x = product(TheGroup, TheRange), fill = TheGroup), na.rm = TRUE) +
  theme(axis.text.x = element_text(angle = 0, hjust = .1)) +
  labs(x = "TheRange", y = "TheGroup")

# Plot NOK
ggplot(data = df) +
  geom_mosaic(aes(weight = 1, x = product(TheRange, TheGroup), fill = TheRange), na.rm = TRUE) +
  theme(axis.text.x = element_text(angle = 0, hjust = .1)) +
  labs(x = "TheGroup", y = "TheRange")

And the subset of my data frame with the variable :

df <- structure(list(TheRange = structure(c(1L, 1L, 2L, 1L, 1L, 1L, 
                                            1L, 2L, 3L, 3L, 2L, 3L, 1L, 3L, 1L, 2L, 3L, 2L, 1L, 2L, 3L, 2L, 
                                            1L, 2L, 2L, 3L, 1L, 3L, 2L, 3L, 2L, 3L, 3L, 3L, 1L, 3L, 1L, 2L, 
                                            1L, 3L, 3L, 1L, 3L),
                     .Label = c("(0,30]", "(30,50]", "(50,100]"), class = "factor"),
                     TheGroup = c("Groupe 2", "Groupe 1", "Groupe 2", 
                                 "Groupe 1", "Groupe 1", "Groupe 2", "Groupe 1", "Groupe 2", "Groupe 2", 
                                 "Groupe 2", "Groupe 2", "Groupe 1", "Groupe 2", "Groupe 2", "Groupe 2", 
                                 "Groupe 2", "Groupe 1", "Groupe 2", "Groupe 1", "Groupe 2", "Groupe 1", 
                                 "Groupe 1", "Groupe 1", "Groupe 2", "Groupe 1", "Groupe 1", "Groupe 1", 
                                 "Groupe 2", "Groupe 1", "Groupe 1", "Groupe 2", "Groupe 2", "Groupe 2", 
                                 "Groupe 2", "Groupe 2", "Groupe 2", "Groupe 2", "Groupe 2", "Groupe 2", 
                                 "Groupe 2", "Groupe 2", "Groupe 2", "Groupe 2")),
                     .Names = c("TheRange", "TheGroup"),
                row.names = c(1L, 2L, 3L, 4L, 5L, 14L, 15L, 16L, 
                                               17L, 18L, 19L, 20L, 21L, 22L, 23L, 24L, 25L, 26L, 27L, 28L, 30L, 
                                               31L, 33L, 34L, 35L, 36L, 37L, 38L, 39L, 41L, 42L, 43L, 44L, 46L, 
                                               47L, 49L, 50L, 51L, 52L, 53L, 54L, 55L, 56L),
                class = "data.frame")
1

There are 1 answers

0
Kumpelka On BEST ANSWER

The bug has been corrected on the last version of ggmosaic (0.1.2).