2013-12-07 5 views
15

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

Вот пример ФРА (обратите внимание, как вы можете видеть в коде, я интересуюсь 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") 

возвращает ошибку: «нет слоев в сюжете»

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

+0

для показа проценты вы можете пойти на этот другой вопрос: http://stackoverflow.com/questions/8952077/pie-plot-getting-its-text-on-top-of-each-other – pandorabob

+0

Поскольку [R говорит себя в своем руководстве Pie Charts] (https://stat.ethz.ch/R-manual/R-devel/library/graphics/html/pie.html): _При диаграммах очень плохой способ отображение информации. Глаз хорош в оценке линейных показателей и плохой при оценке относительных областей. Гистограмма или диаграмма точек - предпочтительный способ отображения данных этого типа. Они относятся к Кливленду и др. (1985). Настоятельно рекомендуется. –

ответ

25

Полярные диаграммы в ggplot в основном преобразуются в штабелированные гистограммы, поэтому вам нужно geom_bar, чтобы заставить его работать. Мы будем использовать одну группу (x = factor(1)), чтобы объединить все значения и fill в столбце, представляющем интерес, чтобы разделить область. На этом этапе вы получите гистограмму с одним баром.

bar <- ggplot(data, aes(x = factor(1), fill = factor(Q7))) + geom_bar(width = 1) 
bar 

enter image description here

Все, что осталось добавить coord_polar:

pie <- bar + coord_polar(theta = "y") 
pie 

enter image description here

Вы можете добавить theme_void() падение осей и метки:

pie + coord_polar(theta = "y") + theme_void() 

enter image description here

+1

Я думаю, что из результата видно, что ggplot не поддерживает круговые диаграммы. Ознакомьтесь с этими альтернативами http://rgm3.lab.nig.ac.jp/RGM/R_rdfile?f=graphics/man/pie.Rd&d=R_Rel, http://rgm3.lab.nig.ac.jp/RGM/ R_rdfile? е = plotrix/человек/pie3D.Rd & д = R_CC –

Смежные вопросы