Проблема в том, что гистограммы построены из grid::rectGrob
, и когда вы увеличиваете контур rectGrob
, он расширяется. Поскольку линии имеют фиксированный размер, а сами полосы - нет (как вы увидите, если измените размер окна), нет простого способа просто сжать rectGrob
s, чтобы компенсировать это, чтобы позволить внутреннее обводку . Таким образом, решить эту проблему сложнее, чем кажется на первый взгляд. Конечно, это не невозможно, но у вас есть три варианта:
- Выберите другой способ построения (например,
position_dodge
) - Достигните желаемого эффекта с помощью временного hack
- Напишите совершенно новую геометрию для достижения эффекта (или найдите пакет, который уже сделал это)
Если это всего лишь одноразовая работа, и вы хотите продолжить особенно приглядитесь к вашему сюжету, я бы определенно выбрал go для варианта 2. Вот пример того, как это может быть достигнуто:
ggplot(dat) +
geom_col(aes(x = dx, y = num, fill = dx, color = test),
size = 3) +
scale_color_manual(values = c("orange","blue")) +
geom_segment(aes(x = 0.53, y = 100, xend = 1.465, yend = 100),
size = 3, colour = "blue") +
geom_segment(aes(x = 0.53, y = 120, xend = 1.465, yend = 120),
size = 3, colour = "orange") +
geom_segment(aes(x = 1.53, y = 40, xend = 2.465, yend = 40),
size = 3, colour = "blue") +
geom_segment(aes(x = 1.53, y = 60, xend = 2.465, yend = 60),
size = 3, colour = "orange")