You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The root problem here is that the stat_*() functions use aggregative functions, namely cumsum(), to convert frequency or count data into alluvium and stratum positions. This means that subsetting the data produces not a diagram with some elements removed and the others in their original positions, but an entirely different diagram. When this is only applied to one layer (in this case, the text labels), then that layer doesn't align with the other layers.
At present, i think the only way to do what you're after is to manipulate the data frame itself to create a new column of labels, some of which are blank...and this would only work for data in long format. But it seems like a general enough need to make it a feature. I'll try to get to this within the next couple of weeks.
v0.9.2 introduces the stat_stratum() parameters min.height and max.height that allow the user to restrict which strata (or, if used with geom_text(), which labels) to render. See the vignette on labeling small strata for an example. Thanks for the prompt!
Description of the issue
After subsetting text labels of the strata in order to lessen the number of labels they are changing positions.
Reproducible example (preferably using
reprex::reprex()
)ggplot(data = titanic_wide,
aes(axis1 = Class, axis2 = Sex, axis3 = Age,
y = Freq)) +
scale_x_discrete(limits = c("Class", "Sex", "Age"), expand = c(.1, .05)) +
xlab("Demographic") +
geom_alluvium(aes(fill = Survived)) +
geom_stratum() + geom_text(data = subset(titanic_wide, Freq > 200), stat = "stratum", label.strata = TRUE) +
theme_minimal() +
ggtitle("passengers on the maiden voyage of the Titanic",
"stratified by demographics and survival")
The text was updated successfully, but these errors were encountered: