Group variables in a boxplot in R
- by tao.hong
I am trying to generate a boxplot whose data come from two scenarios. In the plot, I would like to group boxes by their names (So there will be two boxes per variable). I know ggplot would be a good choice. But I got errors which I could not figure out. Can anyone give me some suggestions?
sensitivity_out1
structure(c(0.0522902104339716, 0.0521369824334004, 0.0520240345973737,
0.0519818337359876, 0.051935071418996, 0.0519089404325544, 0.000392698277338341,
0.000326135474295325, 0.000280863338343747, 0.000259631566041935,
0.000246594043996332, 0.000237923540393391, 0.00046732650331544,
0.000474448907808135, 0.000478287273678457, 0.000480194683464109,
0.000480631753078668, 0.000481760272726273, 0.000947965771207979,
0.000944821699830455, 0.000939631071343889, 0.000937186900570605,
0.000936007346568281, 0.000934756220144141, 0.00132442589501872,
0.00132658367774979, 0.00133334696220742, 0.00133622384928092,
0.0013381577476241, 0.00134005741746304, 0.0991622968751298,
0.100791399440082, 0.101946808417405, 0.102524244727408, 0.102920085260477,
0.103232984259916, 0.0305219507186844, 0.0304635269233494, 0.0304161055015213,
0.0303742106794513, 0.0303381888169022, 0.0302996157711171, 1.94268588634518e-05,
2.23991225564447e-05, 2.5756135487907e-05, 2.79997917298194e-05,
3.00753967077715e-05, 3.16270817369878e-05, 0.544701146678523,
0.542887331601984, 0.541632986366816, 0.541005610554556, 0.540617004208336,
0.540315690692195, 0.000453386694666078, 0.000448473414508756,
0.00044692043197248, 0.000444826296854332, 0.000445747996014684,
0.000444764303682453, 0.000127569551159321, 0.000128422491392669,
0.00012933662856487, 0.000129941842982939, 0.000129578971489026,
0.000131113075233758, 0.00684610571790029, 0.00686349387897349,
0.00687468164010565, 0.00687880720347743, 0.00688275579317197,
0.00687822247621936), .Dim = c(6L, 12L))
out2
structure(c(0.0189965816735366, 0.0189995096225103, 0.0190099362589894,
0.0190033523148514, 0.01900896721937, 0.0190099427513381, 0.00192043989797585,
0.00207303208721059, 0.00225931163225165, 0.0024049969048389,
0.00252310364086785, 0.00262940166568126, 0.00195164921633517,
0.00190079923515755, 0.00186139563778548, 0.00184188171395076,
0.00183248544676564, 0.00182492970673969, 1.83038731485927e-05,
1.98252671720347e-05, 2.14794764479231e-05, 2.30713122969332e-05,
2.4484220713564e-05, 2.55958833705284e-05, 0.0428066864455102,
0.0431686808647809, 0.0434411033615353, 0.0435883377765726, 0.0436690169266633,
0.0437340464360965, 0.145288252474567, 0.141488776430307, 0.138204532539654,
0.136281799717717, 0.134864952272761, 0.133738386148036, 0.0711728636959696,
0.072031388688795, 0.0727536853228245, 0.0731581966147734, 0.0734424337399303,
0.0736637270702609, 0.000605277151497094, 0.000617268349064968,
0.000632975679951382, 0.000643904422677427, 0.000653775268094148,
0.000662225067910141, 0.26735354610469, 0.267515415990146, 0.26753155165617,
0.267553498616325, 0.267532284594615, 0.267510330320289, 0.000334158771646756,
0.000319032383145857, 0.000306074699839994, 0.000299153278494114,
0.000293956197852583, 0.000290171804454218, 0.000645975219899115,
0.000637548672578787, 0.000632375486965757, 0.000629579821884212,
0.000624956458229123, 0.000622456283217054, 0.0645188290106884,
0.0651539609630352, 0.0656417364889907, 0.0658996698322889, 0.0660715073023965,
0.0662034341510152), .Dim = c(6L, 12L))
Melt data:
group variable value
1 1 PLDKRT 0
2 1 PLDKRT 0
3 1 PLDKRT 0
4 1 PLDKRT 0
5 1 PLDKRT 0
6 1 PLDKRT 0
Code:
#Data_source 1
sensitivity_1=rbind(sensitivity_out1,sensitivity_out2)
sensitivity_1=data.frame(sensitivity_1)
colnames(sensitivity_1)=main_l #variable names
sensitivity_1$group=1
#Data_source 2
sensitivity_2=rbind(sensitivity_out1[3:4,],sensitivity_out2[3:4,])
sensitivity_2=data.frame(sensitivity_2)
colnames(sensitivity_2)=main_l
sensitivity_2$group=2
sensitivity_pool=rbind(sensitivity_1,sensitivity_2)
sensitivity_pool_m=melt(sensitivity_pool,id.vars="group")
ggplot(data = sensitivity_pool_m, aes(x = variable, y = value)) + geom_boxplot(aes( fill= group), width = 0.8)
Error:
"Error in unit(tic_pos.c, "mm") : 'x' and 'units' must have length > 0"
Update
Figure out the error. I should use geom_boxplot(aes( fill= factor(group)), width = 0.8) rather than fill= group