Просто изменив размер окна графика с вашим точным кодом, я получу следующее:
С парой небольших настроек, в частности, верхнее поле поля легенды отрицательное значение, я получаю это:
ggplot(results_table, aes(x = "", y = Pct*100,
fill = factor(Criteria, as.character(Criteria))), width = 0.5) +
geom_bar(stat = "identity") +
geom_text(aes(x = 1.65,
y = 100-(Pct * 50 + c(0, cumsum(Pct*100)[-length(Pct*100)])),
label = paste0(sprintf("%0.1f", round(Pct*100, digits = 1)),"%")),
size = 3.2) +
scale_color_manual(values = Palcolor) +
scale_fill_manual(values = Palcolor) +
coord_polar(theta = "y", start = 0, direction = -1) +
theme_minimal() +
theme(legend.position = "bottom",
legend.title = element_blank(),
axis.title.x = element_blank(),
axis.title.y = element_blank(),
panel.border = element_blank(),
panel.grid = element_blank(),
axis.text = element_blank(),
axis.ticks = element_blank(),
plot.title = element_text(size = 14, hjust = 0.5, vjust = -10),
plot.margin = margin(-50, 0, -20, 0),
legend.key.height = unit(0.3, "lines"),
legend.key.width = unit(0.7, "lines"),
legend.box.margin = margin(t = -80, b = 0, l = 40, unit='pt'),
legend.text = element_text(margin = margin(r = 60, unit = "pt"))) +
guides(fill = guide_legend(nrow = 4, byrow = TRUE)) +
labs(title = gTitle)
Я получил это:
Данные получены из вопроса
results_table <- structure(list(Pct = c(0.627, 0.119, 0.09, 0.06, 0.06, 0.03,
0.015), Criteria = structure(c(2L, 4L, 1L, 5L, 6L, 3L, 7L),
.Label = c("Above Market (60th to 74th Percentile)",
"At Market (50th Percentile)", "Below Market (44th Percentile or Lower)",
"No Policy", "Slightly Above Market (51st to 59th Percentile)",
"Slightly Below Market (45th to 49th Percentile)",
"Well Above Market (75th Percentile or Higher)"), class = "factor")),
row.names = c(1L, 5L, 2L, 6L, 3L, 7L, 4L), class = "data.frame")
Palcolor <- c("#702082", "#00a0d2", "#00c389", "#63666a",
"#c110a0", "#ffb81c", "#be57d5")
gTitle <- "Market Positioning of Annual Base Salary for Sales\nEmployees"