corybrunson / ggalluvial

ggplot2 extension for alluvial plots
http://corybrunson.github.io/ggalluvial/
GNU General Public License v3.0
499 stars 34 forks source link

arrange strata to minimize flow overlaps #6

Open corybrunson opened 7 years ago

corybrunson commented 7 years ago

For cases in which the strata have no intrinsic order, an option should be available to arrange the strata at each axis, perhaps even using different orders at different axes when the strata are repeated (maybe this should be allowed or not according to an additional parameter), in a way that minimizes the number of flow overlaps. The majors example in the vignette is a good candidate for such an option.

A heuristic algorithm should suffice, and the concept is general enough that it might already be in use somewhere. I won't have time to write one for a while, and it might be worth writing in C and calling via Rcpp.

corybrunson commented 6 years ago

Working on this in the optimization branch, making use of the iterpc package. Some considerations:

corybrunson commented 6 years ago

The problem with (if necessary, introducing, and) reordering factor levels, and with exporting the function that does so, is that it impacts the behavior of any aesthetics or other features that depend on the factor levels, whether their order or their number. This is turning out to be messier than i'm comfortable with.

An alternative approach is to internally construct a stratum.ordering matrix analogous to lode.ordering in StatAlluvium$compute_panel, which would depend on some guidance parameter like free.strata and which the user could also provide directly. The problem here is that, unless the other layers can receive the argument provided to stat_stratum(), the user would have to provide the argument to each layer individually, at the risk of producing a wrong diagram—and one that might at a glance appear fine.

Failing this (implicitly passing arguments between layers), i'll develop this feature without the free.strata parameter, i.e. only subject to strata values taking the same vertical order at each axis. The most recent attempt to allow variations in stratum order is at 36bc937e3adb8eda6abca5967eeacd52450cabd9.

svenhalvorson commented 6 years ago

From your comments, I'm getting the feeling that this wasn't resolved?

I'm having issues with the ordering of the stratum and posted an example here. I probably just am missing something simple but any help would be appreciated.

corybrunson commented 6 years ago

This issue (#6) is (still, intermittently) being experimented upon in the optimization branch. I think it's unrelated to the issue you describe at the link. Indeed, strata defined using a factor variable should be arranged in order of the factor levels at any axis. I'll make this a separate issue and get to it ASAP. Thanks for raising it!

corybrunson commented 1 year ago

@mbojan points to a good reference at this issue, which i'm closing in order to reduce clutter.