ggplot2 использует facet_grid для создания круговых диаграмм для каждой строки

Я пытаюсь создать круговые диаграммы для этого data.frame, где каждая строка представляет собой уникальный идентификатор сайта, количество ошибок для полей и количество полей. Как лучше всего структурировать команду ggplot для создания круговой диаграммы с ошибками, составляющими часть полей для каждого сайта? В настоящее время мой код выглядит следующим образом:

ggplot(error_indicator,aes(x = Fields,y=Errors)) 
+ facet_grid(~Hospital) 
+ geom_bar(width = 1,stat="identity", position="fill") 
+ coord_polar(theta="y")

Фрейм данных выглядит следующим образом:

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

Но результат моего кода ggplot выглядит следующим образом:

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

Как сделать так, чтобы на круговых диаграммах ошибки отображались в виде соотношений полей для каждой больницы и каждой больницы в отдельной строке?


person Timothy Tuti    schedule 03.10.2013    source источник


Ответы (1)


Во-первых, круговые диаграммы — не лучший способ отображения данных!

Но в любом случае есть одно решение. Наиболее важной частью здесь является scale_y_continuous() установка пределов от 0 до 1, а затем преобразование их в проценты с помощью percent_format() из библиотеки scales.

library(ggplot2)
library(scales)
ggplot(df,aes(x=1,y=Errors/Fields))+geom_bar(stat="identity")+
  facet_grid(~Hospital)+
  coord_polar(theta="y")+
  scale_y_continuous(labels = percent_format(),limits=c(0,1),
              breaks=c(0.25,0.5,0.75,1))+
  theme(axis.title.y=element_blank(),
        axis.text.y=element_blank(),
        axis.ticks.y=element_blank())
person Didzis Elferts    schedule 03.10.2013
comment
Какие графы вы бы предпочли, чтобы я их использовал, и как бы я реализовал их аналогичным многогранным способом? Любые предложения будут ценны. - person Timothy Tuti; 03.10.2013
comment
Возможно, дело вкуса, но мне было бы проще сравнить частоту ошибок в разных больницах, используя неграненый график: ggplot(df, aes(x = Hospital, y = Errors/Fields)) + geom_bar(stat="identity") + scale_y_continuous(labels = percent_format(),limits = c(0, 1), breaks=c(0.25, 0.5, 0.75, 1)). И +1 @Didzis Elferts за хороший ответ, где я узнал о percent_format. - person Henrik; 03.10.2013
comment
Я продолжаю получать сообщение об ошибке Ошибка: дискретное значение предоставлено в непрерывном масштабе с использованием моего набора данных. Я не понимаю, почему я продолжаю получать эту ошибку. - person Timothy Tuti; 03.10.2013
comment
Включите свои данные в вопрос, используя функцию dput(df) - person Didzis Elferts; 03.10.2013