Fix overlap identification in position_dodge2()
#5939
Merged
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.
This PR aims to fix #4327 and fix #5938.
Briefly,
find_x_overlap()
is completely rewritten.The trick was to search wether
xmin[i + 1]
is larger thancummax(xmax)[i]
, then start a new range.The reprex from #4327, note no misplacement of points:
Reprex from #5938, note range 3 is correctly identified as overlapping with 1 & 2.
Better dodging behaviour:
Time considerations in details (tl;dr: it's faster)
Also tested for smaller
nrow(df)
and new is faster than old fromnrow(df) == 5
onwards.Created on 2024-06-07 with reprex v2.1.0