2016-01-04 5 views
-5

мне нужен бар сюжет группы, которая выглядит как:R группа бар участок

enter image description here

с примером набора данных, как это:

With IT background, No IT background 
    9,1 
    2,10 
    7,1 
    2,0 

Я пытался сделать это с ggplot, но не мог 't получить какие-либо работоспособные решения

+2

Учимся воспроизводить пример? используйте dput(), чтобы сделать ваш набор данных доступным и опубликовать то, что вы уже пробовали. – MLavoie

+0

+1 при совместном использовании воспроизводимого примера. В общем, вы можете использовать 'facet_wrap' [link] (http://docs.ggplot2.org/0.9.3.1/facet_wrap.html), чтобы выполнить это. – mtoto

+0

У меня нет никакого рабочего кода, поэтому размещение чего у меня не поможет – wasp256

ответ

2

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

library(ggplot2) 
library(dplyr) 
library(reshape2) 
#recreate the data frame 
data<- data.frame(With.IT.background=c(9,2,7,2), 
       No.IT.background=c(1,10,1,0)) 
#attach rownames 
rownames(data)<- c("Aware of Risks", 
       "Not Aware of Risks", 
       "Care About", "Do Not Care About") 
#make rownames a column (dplyr does not send rownames through pipe) 
data %>% mutate(Awareness=rownames(data)) -> data 

data %>% melt() %>% ggplot(data=., mapping=aes(x=Awareness, 
           y=value, fill=Awareness)) + 
    geom_bar(stat="identity") + theme_bw() + 
    theme(axis.text.x= element_blank(), axis.ticks.x=element_blank())+ 
    ylab("Answers") + xlab("With IT Background") + 
    facet_wrap(~variable) +xlab("") 
+0

Но полученные сюжеты - две одинокие с двумя легендами, разве нельзя получить только один сюжет, как и выше? – wasp256

+0

Да, вы можете сделать обертку фасетом – AlexT

+0

добавить библиотеку (reshape2) , а затем построить в одной строке данные%>% расплава()%>% ggplot (data =., Mapping = aes (x = Awareness, y = значение , fill = Awareness)) + geom_bar (stat = "identity") + theme_bw() + theme (axis.text.x = element_text (hjust = 1, angle = 45)) + ylab («Ответы») + xlab («С фоном IT») + facet_wrap (~ variable) + xlab ("") – AlexT

0

Данные для примера

Answers <- c(1,10,1,0, 9,2,7,2) 
IT <- c(rep("With.IT.background",4), rep("No.IT.background",4)) 
Risks <- c("Aware of risks", "Not aware of risks", "Care about", "Do not care about") 
data <- data.frame(cbind(IT, Risks, Answers)) 

Изменение типов колонок

data$Answers <- as.numeric(as.character(data$Answers)) 
data$Risks <- factor(data$Risks, levels = c("Aware of risks","Not aware of risks", "Care about", "Do not care about")) 

И сюжет

library(ggplot2) 
ggplot(data, aes(x=factor(Risks), y=Answers, fill=factor(Risks))) + 
     geom_bar(stat="identity") + facet_grid(. ~ IT) + 
     ggtitle("Awareness and risks") + guides(fill=guide_legend(title=NULL)) + 
     labs(x = "") + theme(axis.text.x = element_blank()) + # remove xlab and tickers 
     theme(legend.position=c(.5,.7)) +   # put the legend inside 
     theme(legend.background=element_blank()) + # Remove overall border 
     theme(legend.key=element_blank())   # Remove border around each item 
+0

Кажется, что шкалы с двух графиков перекрываются, на оси x я получаю шкалу, начинающуюся с 9,7,2,10,1,0 ?? – wasp256

+0

Исправлено и улучшено. – PereG

3

Вот ответ в базе R,

IT_data <- data.frame(c(9,2,7,2), 
         c(1,10,1,0)) 
colnames(IT_data) <- c("With IT background","No IT background") 
rownames(IT_data) <- c("Aware of Risks","Not Aware of Risks","Care About","Do Not Care About") 

barplot(as.matrix(IT_data), beside=TRUE, 
     col=rainbow(4), 
     legend.text=rownames(IT_data), args.legend=list(x="topleft")) 

Положение и размер легенды могут быть улучшены с помощью следующего кода,

barplot(as.matrix(IT_data), beside=TRUE, 
     col=rainbow(4), 
     legend.text=rownames(IT_data), args.legend=list(x="center",cex=0.7,bty="n")) 

который ближе к просьбе ФП в ,

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