[R] Boxplot: draw outliers in colours

Luigi Marongiu m@rongiu@luigi @ending from gm@il@com
Fri Sep 28 11:50:29 CEST 2018


Dear all,
I am trying to overlap two series of boxplots on the same graph. In
order to distinguish the outliers from one series to the other, would
be possible to colour the outliers?: instead of the standard black, is
it possible to give a chosen colour?
Thank you

>>>
This is the example. I could not generate not normally distributed
random values (even with runif), so I had to create the values
manually and they are still a bit rough (in the real thing, the two
series are more distant), anyway this should better explain the case.
Note that the three outliers at the bottom right belong to the 'blue'
distribution and the upper outlier on the right belongs to the 'green'
distribution, so making them in blue and green colours would make
clearer their positions.

# generate data.frames
A = c(70, 22, 4, 21, 29, 35, 24, 20, 9, 21,
      22, 12, 20, 21, 13, 18, 15, 3, 9, 23,
      6, 5, 2, 24, 25, 21, 16, 0, 4, 1)
B = c(17, 21, 70, 6, 23, 10, 8, 5, 22, 5,
      21, 5, 19, 9, 23, 24, 11, 13, 7, 15,
      25, 9, 13, 14, 11, 9, 12, 0, 5, 9)
C = c(17, 8, 30, 22, 11, 32, 33, 8, 160, 11,
      35, 7, 36, 15, 11, 25, 16, 6, 38, 19,
      35, 30, 12, 27, 22, 32, 47, 39, 31, 26)
D = c(79, 26, 8, 33, 59, 67, 60, 65, 54, 88,
      78, 105, 59, 40, 109, 81, 28, 26, 94,
      35, 10, 38, 58, 79, 58, 10, 5, 8, 4, 50)
E = c(98, 104, 101, 102, 97, 97, 97,
      100, 97, 102, 100, 103, 104,
      104, 99, 102, 100, 97, 102, 105,
      99, 105, 100, 102, 100, 115,
      112, 113, 111, 115)
G = c(105, 130, 97, 105, 113, 123,
      149, 15,     134, 148, 98, 104,
      113, 108, 209, 145, 138, 119,
      142, 129, 298, 101, 136, 129,
      148, 295, 125, 277, 107, 642)
X = rep(c(1, 3, 5),30*3)
dfA <- data.frame(X, c(A, B, C))
dfB <- data.frame(X, c(D, E, G))
names(dfA) <- c("X", "Y")
names(dfB) <- c("X", "Y")

# plot
boxplot(dfA$Y ~ dfA$X,
        ylim=c(0, 200),
        col="green",
        ylab="Y-values",
        xlab="X-values"
)
par(new=TRUE)
boxplot(dfB$Y ~ dfB$X,
        ylim=c(0, 200),
        col="blue",
        ylab="", xlab="",
        xaxt="n", yaxt="n"
)


-- 
Best regards,
Luigi



More information about the R-help mailing list