Figure 1 Replicate

install.packages("patchwork")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.5'
## (as 'lib' is unspecified)
read.csv("rspb20181715supp3.csv")
##          date ID    material  context manutimeuse manutime
## 1  2015-01-24 JN leaf sponge log expe          21       19
## 2  2015-01-12 KB moss sponge log expe           6        4
## 3  2014-01-23 KH moss sponge log expe           6        3
## 4  2015-01-08 KR moss sponge log expe           5        5
## 5  2015-01-17 KR leaf sponge log expe           8        6
## 6  2014-01-16 KZ leaf sponge log expe          23       21
## 7  2015-01-20 ML leaf sponge log expe          18       18
## 8  2014-01-23 NB moss sponge log expe           8        7
## 9  2014-01-23 NT leaf sponge log expe          12       10
## 10 2014-01-16 NT moss sponge log expe           5        1
## 11 2014-01-15 RF leaf sponge log expe           6        4
## 12 2015-01-22 RF leaf sponge log expe           6        5
## 13 2015-01-22 RF leaf sponge log expe           7        5
## 14 2015-01-08 RF leaf sponge log expe           9        9
## 15 2015-01-22 RF leaf sponge log expe          12       11
## 16 2014-01-15 RS leaf sponge log expe           8        7
## 17 2015-01-22 RS leaf sponge log expe           9        8
## 18 2015-01-08 RS leaf sponge log expe          11        8
## 19 2015-01-22 RS moss sponge log expe          11       11
## 20 2015-01-20 SM leaf sponge log expe           7        6
## 21 2015-01-17 ST moss sponge log expe           6        5
## 22 2014-01-16 UP leaf sponge log expe           8        6
## 23 2014-01-23 ZG leaf sponge log expe          21       18
## 24 2014-01-23 ZG leaf sponge log expe          25       21
## 25 2015-01-20 ZL moss sponge log expe          10        8
read.csv("rspb20181715supp2.csv")
##    ID mossed       cond      state
## 1  HW      1  knowledge  knowledge
## 2  JN      1  knowledge  knowledge
## 3  JS      1  knowledge  knowledge
## 4  KB      1  knowledge  knowledge
## 5  KH      0  knowledge  knowledge
## 6  KR      1  knowledge  knowledge
## 7  KS      0  knowledge  knowledge
## 8  KW      1  knowledge  knowledge
## 9  KZ      0  knowledge  knowledge
## 10 MB      0  knowledge  knowledge
## 11 ML      0  knowledge  knowledge
## 12 NB      1  knowledge  knowledge
## 13 NT      1  knowledge  knowledge
## 14 RF      0  knowledge  knowledge
## 15 RS      0  knowledge  knowledge
## 16 SM      0  knowledge  knowledge
## 17 ST      0  knowledge  knowledge
## 18 UP      1  knowledge  knowledge
## 19 ZG      0  knowledge  knowledge
## 20 ZL      0  knowledge  knowledge
## 21 HW     NA       log1     logexp
## 22 JN     NA       log1     logexp
## 23 JS      1       log1     logexp
## 24 KB     NA       log1     logexp
## 25 KH      1       log1     logexp
## 26 KR     NA       log1     logexp
## 27 KS      0       log1     logexp
## 28 KW     NA       log1     logexp
## 29 KZ      0       log1     logexp
## 30 MB     NA       log1     logexp
## 31 ML     NA       log1     logexp
## 32 NB      1       log1     logexp
## 33 NT      1       log1     logexp
## 34 RF      0       log1     logexp
## 35 RS      0       log1     logexp
## 36 SM     NA       log1     logexp
## 37 ST     NA       log1     logexp
## 38 UP      0       log1     logexp
## 39 ZG      0       log1     logexp
## 40 ZL     NA       log1     logexp
## 41 HW      1       log2     logexp
## 42 JN      0       log2     logexp
## 43 JS     NA       log2     logexp
## 44 KB      1       log2     logexp
## 45 KH     NA       log2     logexp
## 46 KR      1       log2     logexp
## 47 KS     NA       log2     logexp
## 48 KW      1       log2     logexp
## 49 KZ     NA       log2     logexp
## 50 MB      0       log2     logexp
## 51 ML      0       log2     logexp
## 52 NB     NA       log2     logexp
## 53 NT     NA       log2     logexp
## 54 RF     NA       log2     logexp
## 55 RS     NA       log2     logexp
## 56 SM      0       log2     logexp
## 57 ST      1       log2     logexp
## 58 UP     NA       log2     logexp
## 59 ZG     NA       log2     logexp
## 60 ZL      1       log2     logexp
## 61 HW      1 claypitexp claypitexp
## 62 JN     NA claypitexp claypitexp
## 63 JS      1 claypitexp claypitexp
## 64 KB      1 claypitexp claypitexp
## 65 KH      0 claypitexp claypitexp
## 66 KR      1 claypitexp claypitexp
## 67 KS     NA claypitexp claypitexp
## 68 KW      1 claypitexp claypitexp
## 69 KZ      0 claypitexp claypitexp
## 70 MB      0 claypitexp claypitexp
## 71 ML      0 claypitexp claypitexp
## 72 NB      0 claypitexp claypitexp
## 73 NT      0 claypitexp claypitexp
## 74 RF     NA claypitexp claypitexp
## 75 RS      0 claypitexp claypitexp
## 76 SM     NA claypitexp claypitexp
## 77 ST     NA claypitexp claypitexp
## 78 UP      0 claypitexp claypitexp
## 79 ZG      0 claypitexp claypitexp
## 80 ZL     NA claypitexp claypitexp
figure1=read.csv("rspb20181715supp5.csv")

str("rspb20181715supp5.csv")
##  chr "rspb20181715supp5.csv"
library(ggplot2)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats   1.0.1     ✔ stringr   1.6.0
## ✔ lubridate 1.9.5     ✔ tibble    3.3.1
## ✔ purrr     1.2.1     ✔ tidyr     1.3.2
## ✔ readr     2.2.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(ggimage)
library(patchwork)

long_format=figure1 %>%
  pivot_longer(cols=c(plant,moss),
               names_to="material",
               values_to="volume") %>%
  mutate(material=ifelse(material=="plant","leaves","moss"))
summary_stat=long_format%>%
  group_by(material, location)%>%
  summarise(mean=mean(volume), se=sd(volume)/sqrt(n()),.groups = "drop")
ggplot(long_format, aes(x=location, y=volume, color=material))+
  geom_jitter(width=0.1,size=2,alpha=0.7,shape=15)+
  geom_errorbar(data = summary_stat, aes(y=mean, ymin= mean-se, ymax=mean+se),width=.2, position = position_dodge(width = 0.4),linewidth=1)+
  scale_color_viridis_d(option = "D")+
  theme_minimal()

Figure 1 For this figure, I simply changed the colors to a color blind friendly option. As well as added more points and included outliers that were not present in the initial figure. The location of the legend was changed simply moved because I do not know how to move it into the corner.

Figure 2 Replicate

out_L=figure1 %>%
  group_by(location) %>%
  mutate(
    Q1=quantile(moss,0.25,na.rm=TRUE),
    Q3=quantile(moss,0.75,na.rm=TRUE),
    IQR=Q3-Q1,
     is_outlier = moss < (Q1 - 1.5 * IQR) | moss > (Q3 + 1.5 * IQR)
  ) %>%
  filter(is_outlier)

out_R=figure1 %>%
group_by(location) %>%
  mutate(
    Q1=quantile(plant,0.25,na.rm=TRUE),
    Q3=quantile(plant,0.75,na.rm=TRUE),
    IQR=Q3-Q1,
     is_outlier = plant < (Q1 - 1.5 * IQR) | plant > (Q3 + 1.5 * IQR)
  ) %>%
  filter(is_outlier)

sum_L=figure1 %>%
  group_by(location) %>%
  summarise(mean=mean(moss,na.rm=TRUE),se=sd(moss,na.rm = TRUE)/sqrt(n()),.groups="drop")

sum_R=figure1 %>%
  group_by(location) %>%
  summarise(mean=mean(plant,na.rm=TRUE),se=sd(plant,na.rm = TRUE)/sqrt(n()),.groups="drop")


figl=ggplot(figure1,aes(x=location,y=moss))+
  geom_boxplot(fill="white",outlier.shape=NA)+
  geom_point(data=out_L, aes(y=moss),shape=1,size=3,alpha=0.7)+
  labs(
    x="",
    y="no. patches",
    title="(i) moss-sponge material")+
  theme_minimal()
 figr=ggplot(figure1,aes(x=location,y=plant))+
  geom_boxplot(fill="white",outlier.shape=NA)+
  geom_point(data=out_R, aes(y=plant),shape=1,size=3,color="black",alpha=0.7)+
   labs(
     x="",
     y="no. stems",
     title="(ii) leaf-sponge material")+
   theme_minimal()
Figure2=figl+figr
Figure2

Figure 2 My second replicated figure was slightly changes because I could not add the dashed line on the whiskers and the lines at the end as well. The values are also slightly formatted different yet the message stays clear across my figure.