Как использовать 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()

введите описание изображения здесь