[R] combining geom_boxplot and geom_point with jitter

Ivan Calandra c@|@ndr@ @end|ng |rom rgzm@de
Thu Sep 2 10:54:42 CEST 2021


Dear useRs,

I'm having a problem to combine geom_boxplot and geom_point with jitter. 
It is difficult to explain but the code and result should make it clear 
(the example dataset is long so I copy it at the end of the email):

p <- ggplot(my_data, aes(x = Diet, y = value, color = Software))
p <- p + geom_boxplot(outlier.shape = NA)
p <- p + geom_point(mapping = aes(shape = NMP_cat), position = 
position_jitterdodge())
print(p)

As you can see in the resulting plot, the points with different shapes 
are dodged across the boxplot categories (colors). I'd like the three 
shapes per color to be restricted in one boxplot color, with jitter of 
course to better visualize the points.

Does that make sense?

I have played with the arguments of position_jitterdodge(), but it seems 
to me that the problem is that the shape aesthetic is not in the 
geom_boxplot() call (but I don't want it there, see below).

For background information, the column used for shape gives some sort of 
"quality" to the points; that's why I want to show the points 
differently, so that it can easily be seen whether "good" points plot in 
the same area as the "bad" points.
Because I'm doing facet plots with other variables, I do not want to 
separate these categories in the boxplots - the resulting plots would be 
overcrowded.

Thank you for the help.
Ivan

---

my_data <- structure(list(Diet = c("Dry lucerne", "Dry lucerne", "Dry 
lucerne", "Dry lucerne", "Dry lucerne", "Dry lucerne", "Dry lucerne", 
"Dry lucerne", "Dry lucerne", "Dry lucerne", "Dry lucerne", "Dry 
lucerne", "Dry lucerne", "Dry lucerne", "Dry lucerne", "Dry lucerne", 
"Dry lucerne", "Dry lucerne", "Dry lucerne", "Dry lucerne", "Dry 
lucerne", "Dry lucerne", "Dry lucerne", "Dry lucerne", "Dry lucerne", 
"Dry lucerne", "Dry lucerne", "Dry lucerne", "Dry lucerne", "Dry 
lucerne", "Dry lucerne", "Dry lucerne", "Dry lucerne", "Dry lucerne", 
"Dry lucerne", "Dry lucerne", "Dry lucerne", "Dry lucerne",
"Dry lucerne", "Dry lucerne", "Dry lucerne", "Dry lucerne", "Dry 
lucerne", "Dry lucerne", "Dry lucerne", "Dry lucerne", "Dry lucerne", 
"Dry lucerne", "Dry grass", "Dry grass", "Dry grass", "Dry grass", "Dry 
grass", "Dry grass", "Dry grass", "Dry grass", "Dry grass", "Dry grass", 
"Dry grass", "Dry grass", "Dry grass", "Dry grass", "Dry grass", "Dry 
grass", "Dry grass", "Dry grass", "Dry grass", "Dry grass", "Dry grass", 
"Dry grass", "Dry grass", "Dry grass", "Dry grass", "Dry grass", "Dry 
grass", "Dry grass", "Dry grass", "Dry grass", "Dry grass", "Dry grass", 
"Dry grass", "Dry grass", "Dry grass", "Dry grass", "Dry grass", "Dry 
grass", "Dry grass", "Dry grass", "Dry grass", "Dry grass", "Dry grass", 
"Dry grass", "Dry bamboo", "Dry bamboo", "Dry bamboo", "Dry bamboo", 
"Dry bamboo", "Dry bamboo", "Dry bamboo", "Dry bamboo", "Dry bamboo", 
"Dry bamboo", "Dry bamboo", "Dry bamboo", "Dry bamboo", "Dry bamboo", 
"Dry bamboo", "Dry bamboo", "Dry bamboo", "Dry bamboo", "Dry bamboo", 
"Dry bamboo", "Dry bamboo", "Dry bamboo", "Dry bamboo", "Dry bamboo", 
"Dry bamboo", "Dry bamboo", "Dry bamboo", "Dry bamboo", "Dry bamboo", 
"Dry bamboo", "Dry bamboo", "Dry bamboo", "Dry bamboo", "Dry bamboo", 
"Dry bamboo", "Dry bamboo", "Dry bamboo", "Dry bamboo", "Dry bamboo", 
"Dry bamboo", "Dry bamboo", "Dry bamboo", "Dry bamboo", "Dry bamboo", 
"Dry bamboo", "Dry bamboo",
"Dry bamboo", "Dry bamboo"), Software = c("ConfoMap", "Toothfrax", 
"ConfoMap", "Toothfrax", "ConfoMap", "Toothfrax", "ConfoMap", 
"Toothfrax", "ConfoMap", "Toothfrax", "ConfoMap", "Toothfrax", 
"ConfoMap", "Toothfrax", "ConfoMap", "Toothfrax", "ConfoMap", 
"Toothfrax", "ConfoMap", "Toothfrax", "ConfoMap", "Toothfrax",
"ConfoMap", "Toothfrax", "ConfoMap", "Toothfrax", "ConfoMap", 
"Toothfrax", "ConfoMap", "Toothfrax", "ConfoMap", "Toothfrax", 
"ConfoMap", "Toothfrax", "ConfoMap", "Toothfrax", "ConfoMap", 
"Toothfrax", "ConfoMap", "Toothfrax", "ConfoMap", "Toothfrax", 
"ConfoMap", "Toothfrax", "ConfoMap", "Toothfrax", "ConfoMap", 
"Toothfrax", "ConfoMap", "Toothfrax", "ConfoMap", "Toothfrax", 
"ConfoMap", "Toothfrax", "ConfoMap", "Toothfrax", "ConfoMap", 
"Toothfrax", "ConfoMap", "Toothfrax", "ConfoMap", "Toothfrax", 
"ConfoMap", "Toothfrax", "ConfoMap", "Toothfrax", "ConfoMap", 
"Toothfrax", "ConfoMap", "Toothfrax", "ConfoMap", "Toothfrax", 
"ConfoMap", "Toothfrax", "ConfoMap", "Toothfrax", "ConfoMap", 
"Toothfrax", "ConfoMap", "Toothfrax", "ConfoMap", "Toothfrax", 
"ConfoMap", "Toothfrax", "ConfoMap", "Toothfrax", "ConfoMap", 
"Toothfrax", "ConfoMap", "Toothfrax", "ConfoMap", "Toothfrax", 
"ConfoMap", "Toothfrax", "ConfoMap", "Toothfrax", "ConfoMap", 
"Toothfrax", "ConfoMap", "Toothfrax", "ConfoMap", "Toothfrax", 
"ConfoMap", "Toothfrax", "ConfoMap", "Toothfrax", "ConfoMap", 
"Toothfrax", "ConfoMap", "Toothfrax", "ConfoMap", "Toothfrax",
"ConfoMap", "Toothfrax", "ConfoMap", "Toothfrax", "ConfoMap", 
"Toothfrax", "ConfoMap", "Toothfrax", "ConfoMap", "Toothfrax", 
"ConfoMap", "Toothfrax", "ConfoMap", "Toothfrax", "ConfoMap", 
"Toothfrax", "ConfoMap", "Toothfrax", "ConfoMap", "Toothfrax", 
"ConfoMap", "Toothfrax", "ConfoMap", "Toothfrax", "ConfoMap", 
"Toothfrax", "ConfoMap", "Toothfrax"), NMP_cat = structure(c(1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 
2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 
3L, 3L, 3L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 2L, 
2L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L), .Label = c("0-5%", "5-10%", 
"10-20%", "20-100%"), class = c("ordered", "factor")), name = 
structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), 
.Label = c("Asfc", "Smfc", "HAsfc9", "HAsfc81", "epLsar", "NewEplsar"), 
class = "factor"), value = c(16.00716636, 12.925787, 14.05932485, 
11.999816, 15.12321532, 12.711474, 12.79565826, 10.900949, 15.90481161, 
12.836045, 16.22778102, 13.565995, 14.71354945, 12.384152, 16.61354777, 
13.714165, 15.91399496, 12.983796, 19.44739619, 15.173215, 16.13761798, 
12.932798, 14.7332952, 12.10277, 10.78710961, 8.762726, 10.16027362, 
8.040399, 14.53444662, 11.527896, 17.38120685, 13.78922, 11.26840546, 
9.426558, 24.01797992, 18.398553, 13.7435699, 11.44385, 14.391873, 
10.757141, 22.39390393, 18.176262, 11.60322022, 9.969118, 11.6099975, 
10.059618, 11.86282935, 10.280864, 16.22473644, 13.562839, 12.46350165, 
10.629406, 23.9347534, 19.062174, 19.58121507, 15.910959, 13.99145447, 
11.352648, 14.38942328, 11.821431, 23.4733371, 18.549503, 13.08142223, 
10.735494, 17.09293046, 13.012834, 28.80020878, 22.447105, 25.74460885, 
19.76834, 14.29106582, 12.233774, 12.03005024, 10.364224, 12.58953574, 
10.30257, 18.07111578, 14.416143, 20.85562751, 16.524047, 21.06132234, 
15.744758, 15.24052683, 11.891487, 11.62446752, 9.14325, 11.75704705, 
10.358542, 13.65568703, 11.766129, 16.98137759, 12.594787, 11.6560954, 
10.32073, 15.46708251, 13.199232, 13.20110131, 11.060226, 16.13986173, 
13.564802, 25.45656859, 20.071231, 24.84006178, 19.335892, 14.4723856, 
11.994841, 12.07940958, 9.470493, 13.93630412, 11.489685, 21.84464295, 
17.806018, 17.4383111, 14.478338, 20.55074297, 16.254467, 30.15238714, 
24.193768, 32.8541897, 25.769585, 32.06966759, 24.507185, 20.53975772, 
15.951186, 11.54494952, 9.676342, 13.56490524, 11.456356, 13.58242208, 
10.919419, 13.55260161, 11.356056, 38.58113502, 31.087536, 23.6753536, 
18.749955, 26.38707155, 20.877856, 26.18252748, 20.758242)), row.names = 
c(NA, -140L), class = c("tbl_df", "tbl", "data.frame"))

-- 
Dr. Ivan Calandra
Imaging lab
RGZM - MONREPOS Archaeological Research Centre
Schloss Monrepos
56567 Neuwied, Germany
+49 (0) 2631 9772-243
https://www.researchgate.net/profile/Ivan_Calandra



More information about the R-help mailing list