geom_point() warning with negative position_dodge width

When I use `geom_plot()` with `position_dodge()` for the `position` argument, I get a warning `position_dodge requires non-overlapping x intervals` if I use a negative value for `width` in `position_dodge()`.
my intention for using a negative width value was to display the grouping variable in reversed order.

is there a way to avoid this warning (maybe a different approach to reoder the grouping variable?)?

see the following reprex

``````library(tidyverse)

df <- tribble(~dimension, ~group, ~value,
"dim 1", "A", 0.5,
"dim 1", "B", 0.75,
"dim 2", "A", 0.4,
"dim 2", "B", 0.4)

plot <- ggplot(data = df,
mapping = aes(x = dimension,
y = value,
color = group))

# no warning
plot +
geom_point(size = 2,
position = position_dodge(width = 0.5))
``````

``````
# warning
plot +
geom_point(size = 2,
position = position_dodge(width = -0.5))
#> Warning: position_dodge requires non-overlapping x intervals
``````

Created on 2021-01-15 by the reprex package (v0.3.0)

I found a solution my self.
Instead of using the a negative value for the `width` argument in `position_dodge()` to reverse the order, one could reorder the factor passed to the `color`argument in `aes()` for example with `fct_rev()`.

``````library(tidyverse)

df <- tribble(~dimension, ~group, ~value,
"dim 1", "A", 0.5,
"dim 1", "B", 0.75,
"dim 2", "A", 0.4,
"dim 2", "B", 0.4)

plot <- ggplot(data = df,
mapping = aes(x = dimension,
y = value,
color = fct_rev(group)))

plot +
geom_point(size = 2,
position = position_dodge(width = 0.5))
``````

If desired, you can define a new colour for the legend.

``````plot +
geom_point(size = 2,
position = position_dodge(width = 0.5)) +
guides(color = guide_legend(
title = "group",
reverse = TRUE))
``````

(disclaimer: from a visualisation point of view, this may not make sense. The reprex is only meant to show how it is done technically.)

Reading the warning for negative `width` values in `position_dodge()`, I drew attention to this in a Github issue (reverse dodge order works differently in position_jitterdodge() vs., for example position_dodge2() · Issue #3610 · tidyverse/ggplot2 · GitHub)

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.

If you have a query related to it or one of the replies, start a new topic and refer back with a link.