извинения, если на этот вопрос уже дан ответ, но я пробовал код из многих постов, но безрезультатно. Я пытаюсь сделать кольцевую диаграмму в ggplot 2, которая является новой для меня. Похоже, что он работает по большей части, но не группирует страны, так что вместо этого каждая строка получает свой кусок в круговой диаграмме, вместо того, чтобы собрать все строки в Соединенном Королевстве (извините, если это не совсем удобно).
Вот код с некоторыми примерами данных (на самом деле у меня 14 стран и 1200 строк):
country <- c("Australia", "Australia", "China", "UK", "UK", "UK", "Australia", "New Zealand", "Hong Kong", "India", "India", "Korea", "Malaysia", "UK")
GAV <- c(32626614, 611751827, 1070038943.77, 1070038990, 611751347, 567751827, 444751827, 611751444, 999751827, 111751827, 222751827, 331751827, 611751844, 611777827)
panel_donut <- data.frame(country, GAV)
удалить строки с помощью NA GAV
panel_donut <- panel_donut[!is.na(panel_donut$GAV),]
рассчитать процент
panel_donut$percentage <- panel_donut$GAV / sum(panel_donut$GAV)* 100
panel_donut <- panel_donut[rev(order(panel_donut$percentage)), ]
panel_donut$ymax <- cumsum(panel_donut$percentage)
panel_donut$ymin <- c(0, head(panel_donut$ymax, n = -1))
panel_donut
изменить цветовые уровни
panel_donut <- panel_donut[order(panel_donut$country), ]
построение графика
library(ggplot2)
library(ggrepel)
donut <- ggplot(panel_donut, aes(fill = country, ymax = ymax, ymin = ymin, xmax = 100, xmin = 80)) +
geom_rect(colour = "black") +
coord_polar(theta = "y") +
xlim(c(0, 100)) +
theme(legend.title = element_text(colour = "black", size = 16, face = "bold"),
legend.text = element_text(colour = "black", size = 15),
panel.grid = element_blank(),
axis.text = element_blank(),
axis.title = element_blank(),
axis.ticks = element_blank())
donut
В настоящее время я получаю кольцевую диаграмму, но все уровни имеют отдельные куски, то есть в Великобритании есть 4 кусочка пончика вместо того, чтобы сгруппировать их в 1. Мне интересно, где я ошибся в своем коде, который привел к в этом происходит.
Заранее спасибо за любую помощь!