2016-04-19 2 views
0

У меня есть 5 столбцов числовых данных (Оборудование, Hyiene.items и т. Д.) И 1 столбец категориальных данных (A или D). Я хотел бы сделать сгруппированные boxplot числовых данных, сгруппированных по категориям, но я не могу найти способ:grouped boxplot r ggplot2

head(sc) 
    Equipment Hygiene.items Patient Near.bed Far.bed Care 
1   0    0  1  5  1 D 
2   1    4  1  2  0 D 
3   3    1  1  2  0 D 
4   0    2  2  3  1 A 
5   1    2  1  5  2 A 
6   1    2  1  1  1 A 

boxplot(sc~sc$Care) казалось бы, как наиболее подходящим образом верно? Мне нравится ggplot2, но это не выглядит как я могу просто сделать это:

ggplot(sc, aes(y=sc)) + 
    geom_boxplot(aes(fill=Care)) 

EDIT: Что мне нравится внешний вид:

Я думаю, что я после что-то вроде этого один я сделал в Matlab (давно):

enter image description here

Или четвёртый график здесь: Plotly

enter image description here

То, что я до сих пор:

library(ggplot2) 
library(RColorBrewer) 

ggplot(melt_A,aes(x=Care,y=value,fill=Care))+geom_boxplot(ylim=c(1,6,1))+facet_grid(~variable)+ 
labs(x = "Care", y = "Surface contacts",color="Care")+ 
    scale_y_continuous(limits = c(-0, 6))+ 
    scale_fill_brewer(palette="Purples")+ 
    theme_bw()+ 
    theme(strip.background=element_rect(fill="black"))+ 
    theme(strip.text=element_text(color="white", face="bold")) 

Вопрос

Как я могу изменить этикетки по уходу из D, H, Me, к чему-то еще? например Прямой Уход за детьми, Медикаменты круглый, и т.д. ...

Исправлено:

Найдено ответ здесь: Stack

Я добавил следующее к моей команде ggplot

scale_fill_brewer(palette="Purples", 
    labels = c("Direct care", "Housekeeping","Medication round","Mealtimes","Miscellaneous care","Personal care")) 

enter image description here

ответ

6

Ваш файл данных не правильно отформатирован. Я назвал ваши данные «А». Вам нужно

library(reshape2) 
melt_A<-melt(A) 

Теперь у вас есть «Care» переменную работу в качестве ID и переменные со значениями в data.frame подходящих для ggplot2

melt_A 
    Care  variable value 
1  D  Equipment  0 
2  D  Equipment  1 
3  D  Equipment  3 
4  A  Equipment  0 
5  A  Equipment  1 
6  A  Equipment  1 
7  D Hygiene.items  0 
8  D Hygiene.items  4 
9  D Hygiene.items  1 
10 A Hygiene.items  2 
11 A Hygiene.items  2 
12 A Hygiene.items  2 
13 D  Patient  1 
14 D  Patient  1 
15 D  Patient  1 
16 A  Patient  2 
17 A  Patient  1 
18 A  Patient  1 
19 D  Near.bed  5 
20 D  Near.bed  2 
21 D  Near.bed  2 
22 A  Near.bed  3 
23 A  Near.bed  5 
24 A  Near.bed  1 
25 D  Far.bed  1 
26 D  Far.bed  0 
27 D  Far.bed  0 
28 A  Far.bed  1 
29 A  Far.bed  2 
30 A  Far.bed  1 

Это один возможный сюжет вы можете сделать с вашими данными

ggplot(melt_A,aes(x=Care,y=value,fill=Care))+geom_boxplot()+facet_wrap(~variable) 

enter image description here

+0

Это удивительно, спасибо большое за soooooooo что Ответить. Это не первый раз, когда я вижу расплав, но это первый раз, когда я его использую. Можно ли сделать квадратики на одном графике только с некоторым пространством между ними? – HCAI

+0

Что вы подразумеваете под «на одном графике только с некоторым пространством между ними»?Я предлагаю вам попробовать facet_wrap (~ variable, nrow = 5) или facet_wrap (~ variable, switch = "x"), чтобы упомянуть еще два дисплея –

+0

Кроме того, я рекомендую играть с темой, вы можете использовать ggplot (melt_A, aes (x = Care, y = value, fill = Care)) + geom_boxplot() + facet_wrap (~ variable, nrow = 5) + theme_classic() или theme_minimal() –

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