Как использовать ggplot2 для генерации кругового графика?
У меня есть вектор значений, который я хотел бы отображать в виде круговой диаграммы. Вектор состоит из 1, 2 и 3, и я бы хотел, чтобы моя круговая диаграмма отображала процент 1, 2 и 3 в векторе в дополнение к меткам для этих областей. 1 были бы демократами, 2 республиканцами и 3 независимыми. Вектор, с которым я работал, является столбцом кадра данных. Могут быть некоторые проблемы с типом, хотя я передал его с использованием as.numeric() и as.factor().
Вот пример df (обратите внимание, как вы можете видеть в коде, я в курсе col Q7):
Q6 Q7 Q8 Q9
3 30 3 5 1
4 30 3 5 1
5 65 3 2 2
6 29 3 5 1
7 23 1 4 1
8 24 1 5 1
Вот код, который я пытался:
install.packages('ggplot2')
library(ggplot2)
# pie graph for party
pie <- ggplot(data=data, aes(x = as.factor(data$Q7), fill = factor(cyl)))
pie + coord_polar(theta = "y")
Он возвращает ошибку: "Нет слоев в сюжете"
Спасибо за помощь!
Ответы
Ответ 1
Полярные диаграммы в ggplot в основном преобразуются в штабельные диаграммы, поэтому вам нужно geom_bar
, чтобы он работал. Мы будем использовать одну группу (x = factor(1)
), чтобы собрать все значения вместе и fill
в интересующем столбце, чтобы разделить область. На этом этапе вы получите гистограмму с одним баром.
bar <- ggplot(data, aes(x = factor(1), fill = factor(Q7))) + geom_bar(width = 1)
bar
![введите описание изображения здесь]()
Все, что осталось, это добавить coord_polar
:
pie <- bar + coord_polar(theta = "y")
pie
![введите описание изображения здесь]()
Вы можете добавить theme_void()
для удаления осей и меток:
pie + coord_polar(theta = "y") + theme_void()
![введите описание изображения здесь]()