Implement geom_beeswarm using a quasi-random algorithm - #1068
Open
const-ae wants to merge 1 commit into
Open
Conversation
The method uses the van der Corput algorithm to produce a low discrepancy sequence between 0 and 1.
Author
|
Just checking if this feature is of interest? |
Owner
Yes. I will get to it before the next minor release v0.16.0. |
has2k1
requested changes
Aug 18, 2026
has2k1
left a comment
Owner
There was a problem hiding this comment.
I could also refactor the PR, so that
stat_sinaandstat_beeswarmuse a common code base.
They do have a lot of code in common and it would be make sense if the refactor can extract some meaningful structure beyond the stat methods. Otherwise we can leave it as it is.
| all_integers = (y == np.floor(y)).all() | ||
| some_are_unique = len(np.unique(y)) > 1 | ||
| if all_integers and some_are_unique: | ||
| # TODO: expose random_state as a stat parameter for reproducibility |
|
|
||
| n = 50 | ||
| random_state = np.random.RandomState(123) | ||
| uni = random_state.chisquare(17, n) |
Owner
There was a problem hiding this comment.
Reduce the degrees of freedom so that geometries in the test can cover more area.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #318.
This PR implements a beeswarm algorithm that produces a (in my opinion) visually more appealing output than the random sampling implemented in geom_sina.
The code and unit testes are mostly copied from [geom|stat]_sina. I removed the
random_stateparameter as it isn't needed anymore (except when jitter is called). I wasn't sure what the best way to do here is, so any feedback would be appreciated.I could also refactor the PR, so that stat_sina and stat_beeswarm use a common code base.