Возможно, я вас неправильно понимаю, но вы сможете получить желаемый результат, настроив аргумент position
:
ggplot(data, aes(fill = algorithm, y = value, x = target)) +
geom_bar(position = position_dodge(1), stat = "identity", width = 0.65) +
theme_classic() +
scale_fill_manual("Algorithm",
values = alpha(c("0_DT" = "#20639B",
"1_RF" = "#3CAEA3",
"2_MLP" = "#F6D55C"), 0.8),
labels = c("DT", "RF", "MLP")) +
scale_y_continuous("Accuracy in %",limits = c(0, 100), oob = rescale_none,
breaks= seq(0, 100, 10),
expand = c(0, 0))
Если вы хотите сохранить видимую ширину столбцов, но также уменьшить расстояние между столбцами, вам придется увеличить ширину, но изменить форму всего графика, изменив размеры окна или поля графика:
ggplot(data, aes(fill = algorithm, y = value, x = target)) +
geom_bar(position = position_dodge(1), stat = "identity", width = 0.8) +
theme_classic() +
scale_fill_manual("Algorithm",
values = alpha(c("0_DT" = "#20639B",
"1_RF" = "#3CAEA3",
"2_MLP" = "#F6D55C"), 0.8),
labels = c("DT", "RF", "MLP")) +
scale_y_continuous("Accuracy in %",limits = c(0, 100), oob = rescale_none,
breaks= seq(0, 100, 10),
expand = c(0, 0)) +
theme(plot.margin = unit(c(10, 50, 10, 50), "points"))
Это может быть не совсем то, что вы хотите, но некоторая комбинация position_dodge
, width
и plot.margin
даст вам интервал, который вы ищете.
РЕДАКТИРОВАТЬ
Следуя комментариям ОП, похоже, что окончательное решение должно выглядеть примерно так, что делается с помощью width = 0.9
, position_dodge(0.9)
и plot.margin = unit(c(10, 50, 10, 50), "points"))
: