Как использовать ggplot2 для создания круговой диаграммы?

У меня есть вектор значений, который я хотел бы отобразить в виде круговой диаграммы. Вектор состоит из 1, 2 и 3, и я хотел бы, чтобы моя круговая диаграмма отображала процентное соотношение единиц, 2 и 3 в векторе в дополнение к меткам для областей. Первые будут демократами, двое - республиканцами, а третьи - независимыми. Вектор, с которым я работал, - это столбец фрейма данных. Могут быть некоторые проблемы с типом, хотя я передал это с помощью as.numeric () и as.factor ().

Вот пример df (обратите внимание, как вы можете видеть в коде, я вставлен в столбец 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")

Возвращает ошибку: «Нет слоев на графике».

Спасибо за помощь!


person goldisfine    schedule 07.12.2013    source источник
comment
для отображения процентов вы можете перейти к другому вопросу: stackoverflow.com/questions/8952077/   -  person pandorabob    schedule 04.11.2014
comment
Как R говорит себя в своем руководстве по круговым диаграммам: Круговые диаграммы - очень плохой способ отображения информации. Глаз хорошо оценивает линейные размеры и плохо оценивает относительные площади. Гистограмма или точечная диаграмма - предпочтительный способ отображения данных этого типа. Они относятся к Cleveland et al. (1985). Настоятельно рекомендуется.   -  person MS Berends    schedule 10.05.2017


Ответы (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()

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

person zero323    schedule 07.12.2013
comment
Я думаю, что из результата очевидно, что ggplot не поддерживает круговые диаграммы. Ознакомьтесь с этими альтернативами rgm3.lab. nig.ac.jp/RGM/R_rdfile?f=graphics/man/, rgm3.lab.nig.ac.jp/RGM/R_rdfile?f=plotrix/man/ - person George Dontas; 07.12.2013