我有5列数值数据(Equipment,Hyiene.items等)和1列分类数据(A或D).我想制作一个按类别分组的数字数据的分组箱图,但我找不到方法:
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
Run Code Online (Sandbox Code Playgroud)
boxplot(sc~sc$Care)看起来最合适的方式对吗?我喜欢ggplot2,但看起来我不能这样做:
ggplot(sc, aes(y=sc)) +
geom_boxplot(aes(fill=Care))
Run Code Online (Sandbox Code Playgroud)
编辑:我喜欢的外观:
我认为我所追求的是像我在Matlab(很久以前)制作的那样:
或者这里的第四张图:Plotly
到目前为止我所拥有的:
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"))
Run Code Online (Sandbox Code Playgroud)
题
如何将护理标签从D,H,Me更改为其他内容?例如直接护理,家务管理,药物治疗等...
固定:
在这里找到答案:堆栈
我在ggplot命令中添加了以下内容
scale_fill_brewer(palette="Purples",
labels = c("Direct care", "Housekeeping","Medication round","Mealtimes","Miscellaneous care","Personal care"))
Run Code Online (Sandbox Code Playgroud)
Mat*_*ina 14
您的data.frame格式不正确.我将您的数据命名为"A".你需要
library(reshape2)
melt_A<-melt(A)
Run Code Online (Sandbox Code Playgroud)
现在,您将"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
Run Code Online (Sandbox Code Playgroud)
这是您可能想要对数据进行的一个可能的绘图
ggplot(melt_A,aes(x=Care,y=value,fill=Care))+
geom_boxplot()+
facet_wrap(~variable)
Run Code Online (Sandbox Code Playgroud)