NOTE: We have data from participants of the National Cancer Institute (NCI). This data set includes some demographic, ancestral, clinical, and biomarker information on each participant within the study. Here we perform Pearsons pairwise t-test comparisons to report differences inn serum biomarkers levels.

install packages:

library(plyr)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:plyr':
## 
##     arrange, count, desc, failwith, id, mutate, rename, summarise,
##     summarize
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(tidyr)
library(readxl)
## Warning: package 'readxl' was built under R version 4.4.1
library("rstatix")
## 
## Attaching package: 'rstatix'
## The following objects are masked from 'package:plyr':
## 
##     desc, mutate
## The following object is masked from 'package:stats':
## 
##     filter
library("ggplot2")
library("dplyr")
library("ggpubr")
## 
## Attaching package: 'ggpubr'
## The following object is masked from 'package:plyr':
## 
##     mutate
library("dunn.test")
library("ARTool")
library(openxlsx)
## Warning: package 'openxlsx' was built under R version 4.4.1
library("rio")
## Warning: package 'rio' was built under R version 4.4.1
library(corrplot)
## Warning: package 'corrplot' was built under R version 4.4.1
## corrplot 0.95 loaded

locate file:

NCI_ancestry <- read_excel("/Users/bestdadever/Dropbox/Tsion/NCI_MD/Data/patient_pop_data/WestAfrAncestry_NCIMDcontrols.xlsx")

Descriptive Statistics for population splitting ancestry data into quartiles:

#West African Ancestry
WestAfrquart <- quantile(NCI_ancestry$WestAfr, probs = c(0.25, 0.5, 0.75), na.rm = TRUE)
WestAfrquart
##  25%  50%  75% 
## 0.05 0.20 0.74

subset data by ancestry: West African Ancestry:

#subset
WestAfrlow <- subset(NCI_ancestry, WestAfr <= 0.05)
WestAfrmid <- subset(NCI_ancestry, WestAfr >= 0.05 & WestAfr <= 0.20)
WestAfrhigh <- subset(NCI_ancestry, WestAfr >= 0.74)

histogram of WestAfr:

hist(NCI_ancestry$WestAfr,
     breaks = 200,
     main = "Histogram of % WestAfr",
     col = "lightblue",
     border = "black")

creating data set that removes rows/individuals with NA (no values for ancestry data):

WestAfrlab<- subset(NCI_ancestry, !is.na(NCI_ancestry$WestAfr))

creating a new column within the current data set:

WestAfrquart
##  25%  50%  75% 
## 0.05 0.20 0.74
WestAfrlab$WestAfrPercentage[WestAfrlab$WestAfr < 0.05] <- 0
## Warning: Unknown or uninitialised column: `WestAfrPercentage`.
WestAfrlab$WestAfrPercentage[(WestAfrlab$WestAfr >= 0.05) & (WestAfrlab$WestAfr <= 0.20)] <- 1
WestAfrlab$WestAfrPercentage[WestAfrlab$WestAfr > 0.74] <- 2
WestAfrlab$WestAfrPercentage
##   [1] NA NA  0  0  1  0  2  2  1  0  0  0  0  1  2  2  0 NA NA  2 NA NA  2  0  2
##  [26]  0  1  1  0  1  0  1  0  0  0  0  2  0  1  0  1  0  0  1  0  2  1  2  2  0
##  [51]  0  0  1  0  0  0  0  1  0  0  0  0  0  1  0 NA  1  0  0  0  0  0  0  0  1
##  [76]  0  0  1  1  0  0  0  0  0  0  0  0  0  0  0 NA NA NA  2  0  0  1  0  0  1
## [101]  0  0  0  0  0  1 NA NA  1  0  1 NA  0  2  0  1  2  1  0  1  1  1  0  1  0
## [126]  0  0  1  0  1  0  0  0  1  1  1  0  0  0  1  2 NA NA NA  2  2  0  1  0  0
## [151]  0  1  0  2 NA NA  2 NA  2 NA  2  2  1 NA NA NA  2  2 NA  2 NA NA  2 NA NA
## [176]  2 NA NA NA  2 NA  2 NA NA  2 NA  2  2 NA NA NA  2 NA NA NA  2 NA NA  2 NA
## [201] NA  2 NA  2  2 NA  2 NA  1  0 NA  2  0  0 NA  0  1  1  2  1  1  0  0  2  2
## [226]  0  0  0  2  1  1  0  2  1  0  1  1 NA NA  0  1  0  0  0  0  1  1  2  0  1
## [251]  1  1  0  0  0  1 NA  0  2  2  0 NA NA  0  1  0  1  1 NA  0  1  2 NA  0  2
## [276]  0 NA  1  2  2 NA  2  2  2  2 NA NA NA NA NA  0 NA NA  0  0  0  0  0  1  1
## [301]  1  0  0  1  1  1  1 NA  0  0  0  0  1  1 NA  2  1  1  2  0  2  1  0  2  1
## [326]  1 NA NA  1 NA  0  0  0  2  0  0  1 NA  1  1  1  0 NA NA  1  1  2  1  1 NA
## [351]  0 NA  0  1 NA NA NA  0 NA NA  1  2  2  2 NA NA NA NA NA NA NA  1 NA  1  1
## [376] NA  1  1 NA  1  1 NA  1  1  1  1 NA  1  1  1  1  1 NA NA  1 NA NA NA NA  1
## [401] NA NA  1  2  1  2 NA  2  2 NA  2 NA  1 NA  1  1  1 NA NA  1 NA  0  2 NA  1
## [426]  0  2  1  1 NA  2 NA  1  2  2  1  1  1  2  0 NA  0  1  1  1 NA NA  1  0  1
## [451]  1  1  1  0  2  2 NA  0 NA  1 NA NA  1  2  1  1  1  2  2  1  0 NA  2  1  1
## [476]  1  1 NA  1  2  0 NA NA  0  0  1  1  1  2  0  0  1  1  0  0  0  2 NA  1  2
## [501]  0  2  0  1  2  2  0  2  0  0  1 NA  1  1  2 NA  2  1 NA  0 NA  1  1 NA NA
## [526]  1 NA  0  2  2  1  2  0  1  2  0  0  0  2  0  0 NA  0  1 NA  1  1  1  2  1
## [551]  2  1  1  1  0  1  1  2  0  0  2  0  1  0  1  1  1  2  0  2 NA NA  2  0  0
## [576]  1 NA  1 NA  2  2  2  2  0 NA  2 NA  0  2  2  2  2  2  2  2 NA NA NA NA  2
## [601]  2 NA NA  2  2 NA  2 NA  2  2 NA NA  2  2 NA NA  2 NA NA  2 NA  2  2  2 NA
## [626] NA NA NA  2  2 NA  2  2 NA  2 NA  2 NA NA  2  2  2  2  1  2 NA NA  2  2  2
## [651] NA  2  2  2 NA  1  2 NA NA NA NA  2  2 NA NA NA NA NA NA  2 NA NA NA  2  2
## [676] NA NA  2 NA  2  2  1 NA  2  2 NA  2 NA NA  2  2  2 NA  2 NA NA  2 NA NA NA
## [701] NA NA  2 NA  2  2  2  2  2  2  2  2 NA NA  2 NA  2  2 NA NA NA  2 NA  1  2
## [726]  1  1 NA  0  1  1  0  1  1  2  1  1 NA  1 NA NA  1  0  1  0 NA  0  1  0  1
## [751]  1  0  0 NA  0  1  1  0  0  1  0  0  1  0  1  1  1  0 NA  1  1  0  1  1 NA
## [776]  2  2  0  2  0  1  0  0  1  1  0  0  2  0  2  1  0  1  1 NA

creating a new column that is a replicate of the old column (labeling our original conditions with text):

WestAfrlab$WestAfrPerLab <- WestAfrlab$WestAfrPercentage
WestAfrlab$WestAfrPerLab[WestAfrlab$WestAfrPerLab == 0] <- "Low"
WestAfrlab$WestAfrPerLab[WestAfrlab$WestAfrPerLab == 1] <- "Mid"
WestAfrlab$WestAfrPerLab[WestAfrlab$WestAfrPerLab == 2] <- "High"

Biomarker comparison plots: IL8 WestAfr ancestry plot with mean bar:***

IL8.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=IL8)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("IL8 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("IL8 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
IL8.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
IL8.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = IL8.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

IL8 WestAfr ancestry plot with box plot (Color):***

IL8.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=IL8, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("IL8 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("IL8 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
IL8.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
IL8.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = IL8.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

TNFRSF9 WestAfr ancestry plot with mean bar:***

TNFRSF9.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=TNFRSF9)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("TNFRSF9 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("TNFRSF9 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
TNFRSF9.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
TNFRSF9.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = TNFRSF9.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

TNFRSF9 WestAfr ancestry plot with box plot (Color):***

TNFRSF9.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=TNFRSF9, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("TNFRSF9 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("TNFRSF9 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
TNFRSF9.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
TNFRSF9.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = TNFRSF9.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

TIE2 WestAfr ancestry plot with mean bar:***

TIE2.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=TIE2)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("TIE2 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("TIE2 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
TIE2.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
TIE2.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = TIE2.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

TIE2 WestAfr ancestry plot with box plot (Color):***

TIE2.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=TIE2, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("TIE2 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("TIE2 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
TIE2.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
TIE2.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = TIE2.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CD40L WestAfr ancestry plot with mean bar:***

CD40L.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CD40L)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CD40L \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CD40L Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
CD40L.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CD40L.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CD40L.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CD40L WestAfr ancestry plot with box plot (Color):***

CD40L.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CD40L, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CD40L \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CD40L Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
CD40L.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CD40L.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CD40L.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CD244 WestAfr ancestry plot with mean bar:***

CD244.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CD244)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CD244 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CD244 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
CD244.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CD244.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CD244.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CD244 WestAfr ancestry plot with box plot (Color):***

CD244.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CD244, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CD244 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CD244 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
CD244.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CD244.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CD244.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

EGF WestAfr ancestry plot with mean bar:***

EGF.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=EGF)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("EGF \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("EGF Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
EGF.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
EGF.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = EGF.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

EGF WestAfr ancestry plot with box plot (Color):***

EGF.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=EGF, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("EGF \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("EGF Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
EGF.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
EGF.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = EGF.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

ANGPT2 WestAfr ancestry plot with mean bar:***

ANGPT2.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=ANGPT2)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("ANGPT2 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("ANGPT2 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
ANGPT2 <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
ANGPT2.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = ANGPT2)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

ANGPT2 WestAfr ancestry plot with box plot (Color):***

ANGPT2.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=ANGPT2, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("ANGPT2 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("ANGPT2 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
ANGPT2.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
ANGPT2.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = ANGPT2.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

PGF WestAfr ancestry plot with mean bar:***

PGF.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=PGF)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("PGF \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("PGF Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
PGF.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
PGF.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = PGF.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

PGF WestAfr ancestry plot with box plot (Color):***

PGF.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=PGF, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("PGF \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("PGF Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
PGF.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
PGF.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = PGF.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

IL6 WestAfr ancestry plot with mean bar:***

IL6.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=IL6)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("IL6 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("IL6 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
IL6.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
IL6.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = IL6.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

IL6 WestAfr ancestry plot with box plot (Color):***

IL6.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=IL6, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("IL6 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("IL6 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
IL6.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
IL6.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = IL6.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

MCP1 WestAfr ancestry plot with mean bar:***

MCP1.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=MCP1)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("MCP1 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("MCP1 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
MCP1.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
MCP1.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = MCP1.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

MCP1 WestAfr ancestry plot with box plot (Color):***

MCP1.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=MCP1, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("MCP1 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("MCP1 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
MCP1.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
MCP1.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = MCP1.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CRTAM WestAfr ancestry plot with mean bar:***

CRTAM.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CRTAM)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CRTAM \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CRTAM Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
CRTAM.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CRTAM.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CRTAM.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CRTAM WestAfr ancestry plot with box plot (Color):***

CRTAM.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CRTAM, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CRTAM \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CRTAM Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
CRTAM.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CRTAM.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CRTAM.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

MCP4 WestAfr ancestry plot with mean bar:***

MCP4.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=MCP4)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("MCP4 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("MCP4 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
MCP4.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
MCP4.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = MCP4.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

MCP4 WestAfr ancestry plot with box plot (Color):***

MCP4.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=MCP4, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("MCP4 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("MCP4 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
MCP4.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
MCP4.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = MCP4.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

TRAIL WestAfr ancestry plot with mean bar:***

TRAIL.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=TRAIL)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("TRAIL \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("TRAIL Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
TRAIL.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
TRAIL.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = TRAIL.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

TRAIL WestAfr ancestry plot with box plot (Color):***

TRAIL.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=TRAIL, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("TRAIL \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("TRAIL Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
TRAIL.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
TRAIL.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = TRAIL.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CXCL9 WestAfr ancestry plot with mean bar:***

CXCL9.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CXCL9)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CXCL9 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CXCL9 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
CXCL9.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CXCL9.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CXCL9.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CXCL9 WestAfr ancestry plot with box plot (Color):***

CXCL9.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CXCL9, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CXCL9 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CXCL9 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
CXCL9.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CXCL9.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CXCL9.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CAIX WestAfr ancestry plot with mean bar:***

CAIX.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CAIX)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CAIX \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CAIX Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
CAIX.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CAIX.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CAIX.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CAIX WestAfr ancestry plot with box plot (Color):***

CAIX.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CAIX, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CAIX \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CAIX Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
CAIX.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CAIX.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CAIX.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

ADA WestAfr ancestry plot with mean bar:***

ADA.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=ADA)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("ADA \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("ADA Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
ADA.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
ADA.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = ADA.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

ADA WestAfr ancestry plot with box plot (Color):***

ADA.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=ADA, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("ADA \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("ADA Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
ADA.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
ADA.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = ADA.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

Gal9 WestAfr ancestry plot with mean bar:***

Gal9.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=Gal9)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("Gal9 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("Gal9 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
Gal9.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
Gal9.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = Gal9.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

Gal9 WestAfr ancestry plot with box plot (Color):***

Gal9.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=Gal9, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("Gal9 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("Gal9 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
Gal9.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
Gal9.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = Gal9.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

VEGFR2 WestAfr ancestry plot with mean bar:***

VEGFR2.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=VEGFR2)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("VEGFR2 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("VEGFR2 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
VEGFR2.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
VEGFR2.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = VEGFR2.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

VEGFR2 WestAfr ancestry plot with box plot (Color):***

VEGFR2.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=VEGFR2, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("VEGFR2 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("VEGFR2 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
VEGFR2.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
VEGFR2.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = VEGFR2.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CD40 WestAfr ancestry plot with mean bar:***

CD40.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CD40)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CD40 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CD40 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
CD40.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CD40.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CD40.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CD40 WestAfr ancestry plot with box plot (Color):***

CD40.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CD40, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CD40 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CD40 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
CD40.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CD40.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CD40.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

IL18 WestAfr ancestry plot with mean bar:***

IL18.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=IL18)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("IL18 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("IL18 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
IL18.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
IL18.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = IL18.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

IL18 WestAfr ancestry plot with box plot (Color):***

IL18.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=IL18, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("IL18 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("IL18 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
IL18.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
IL18.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = IL18.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

GZMH WestAfr ancestry plot with mean bar:***

GZMH.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=GZMH)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("GZMH \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("GZMH Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
GZMH.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
GZMH.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = GZMH.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

GZMH WestAfr ancestry plot with box plot (Color):***

GZMH.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=GZMH, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("GZMH \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("GZMH Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
GZMH.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
GZMH.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = GZMH.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CXCL1 WestAfr ancestry plot with mean bar:***

CXCL1.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CXCL1)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CXCL1 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CXCL1 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
CXCL1.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CXCL1.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CXCL1.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CXCL1 WestAfr ancestry plot with box plot (Color):***

CXCL1.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CXCL1, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CXCL1 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CXCL1 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
CXCL1.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CXCL1.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CXCL1.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

TNFSF14 WestAfr ancestry plot with mean bar:***

TNFSF14.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=TNFSF14)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("TNFSF14 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("TNFSF14 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
TNFSF14.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
TNFSF14.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = TNFSF14.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

TNFSF14 WestAfr ancestry plot with box plot (Color):***

TNFSF14.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=TNFSF14, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("TNFSF14 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("TNFSF14 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
TNFSF14.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
TNFSF14.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = TNFSF14.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

TWEAK WestAfr ancestry plot with mean bar:***

TWEAK.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=TWEAK)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("TWEAK \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("TWEAK Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
TWEAK.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
TWEAK.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = TWEAK.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

TWEAK WestAfr ancestry plot with box plot (Color):***

TWEAK.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=TWEAK, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("TWEAK \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("TWEAK Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
TWEAK.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
TWEAK.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = TWEAK.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

PDGFsubunitB WestAfr ancestry plot with mean bar:***

PDGFsubunitB.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=PDGFsubunitB)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("PDGFsubunitB \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("PDGFsubunitB Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
PDGFsubunitB.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
PDGFsubunitB.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = PDGFsubunitB.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

PDGFsubunitB WestAfr ancestry plot with box plot (Color):***

PDGFsubunitB.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=PDGFsubunitB, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("PDGFsubunitB \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("PDGFsubunitB Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
PDGFsubunitB.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
PDGFsubunitB.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = PDGFsubunitB.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

PDCD1 WestAfr ancestry plot with mean bar:***

PDCD1.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=PDCD1)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("PDCD1 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("PDCD1 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
PDCD1.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
PDCD1.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = PDCD1.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

PDCD1 WestAfr ancestry plot with box plot (Color):***

PDCD1.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=PDCD1, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("PDCD1 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("PDCD1 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
PDCD1.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
PDCD1.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = PDCD1.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

FASLG WestAfr ancestry plot with mean bar:***

FASLG.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=FASLG)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("FASLG \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("FASLG Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
FASLG.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
FASLG.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = FASLG.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

FASLG WestAfr ancestry plot with box plot (Color):***

FASLG.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=FASLG, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("FASLG \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("FASLG Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
FASLG.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
FASLG.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = FASLG.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

MCP2 WestAfr ancestry plot with mean bar:***

MCP2.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=MCP2)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("MCP2 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("MCP2 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
MCP2.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
MCP2.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = MCP2.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

MCP2 WestAfr ancestry plot with box plot (Color):***

MCP2.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=MCP2, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("MCP2 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("MCP2 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
MCP2.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
MCP2.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = MCP2.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CCL4 WestAfr ancestry plot with mean bar:***

CCL4.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CCL4)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CCL4 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CCL4 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
CCL4.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CCL4.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CCL4.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CCL4 WestAfr ancestry plot with box plot (Color):***

CCL4.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CCL4, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CCL4 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CCL4 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
CCL4.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CCL4.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CCL4.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

Gal1 WestAfr ancestry plot with mean bar:***

Gal1.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=Gal1)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("Gal1 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("Gal1 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
Gal1.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
Gal1.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = Gal1.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

Gal1 WestAfr ancestry plot with box plot (Color):***

Gal1.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=Gal1, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("Gal1 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("Gal1 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
Gal1.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
Gal1.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = Gal1.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

PDL1 WestAfr ancestry plot with mean bar:***

PDL1.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=PDL1)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("PDL1 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("PDL1 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
PDL1.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
PDL1.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = PDL1.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

PDL1 WestAfr ancestry plot with box plot (Color):***

PDL1.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=PDL1, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("PDL1 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("PDL1 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
PDL1.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
PDL1.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = PDL1.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CD27 WestAfr ancestry plot with mean bar:***

CD27.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CD27)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CD27 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CD27 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
CD27.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CD27.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CD27.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CD27 WestAfr ancestry plot with box plot (Color):***

CD27.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CD27, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CD27 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CD27 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
CD27.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CD27.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CD27.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

HGF WestAfr ancestry plot with mean bar:***

HGF.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=HGF)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("HGF \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("HGF Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
HGF.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
HGF.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = HGF.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

HGF WestAfr ancestry plot with box plot (Color):***

HGF.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=HGF, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("HGF \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("HGF Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
HGF.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
HGF.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = HGF.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

GZMA WestAfr ancestry plot with mean bar:***

GZMA.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=GZMA)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("GZMA \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("GZMA Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
GZMA.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
GZMA.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = GZMA.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

GZMA WestAfr ancestry plot with box plot (Color):***

GZMA.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=GZMA, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("GZMA \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("GZMA Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
GZMA.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
GZMA.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = GZMA.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

HO1 WestAfr ancestry plot with mean bar:***

HO1.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=HO1)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("HO1 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("HO1 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
HO1.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
HO1.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = HO1.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

HO1 WestAfr ancestry plot with box plot (Color):***

HO1.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=HO1, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("HO1 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("HO1 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
HO1.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
HO1.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = HO1.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CX3CL1 WestAfr ancestry plot with mean bar:***

CX3CL1.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CX3CL1)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CX3CL1 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CX3CL1 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
CX3CL1.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CX3CL1.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CX3CL1.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CX3CL1 WestAfr ancestry plot with box plot (Color):***

CX3CL1.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CX3CL1, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CX3CL1 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CX3CL1 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
CX3CL1.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CX3CL1.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CX3CL1.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CD70 WestAfr ancestry plot with mean bar:***

CD70.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CD70)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CD70 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CD70 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
CD70.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CD70.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CD70.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CD70 WestAfr ancestry plot with box plot (Color):***

CD70.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CD70, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CD70 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CD70 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
CD70.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CD70.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CD70.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

TNFRSF12A WestAfr ancestry plot with mean bar:***

TNFRSF12A.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=TNFRSF12A)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("TNFRSF12A \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("TNFRSF12A Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
TNFRSF12A.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
TNFRSF12A.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = TNFRSF12A.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

TNFRSF12A WestAfr ancestry plot with box plot (Color):***

TNFRSF12A.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=TNFRSF12A, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("TNFRSF12A \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("TNFRSF12A Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
TNFRSF12A.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
TNFRSF12A.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = TNFRSF12A.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CCL23 WestAfr ancestry plot with mean bar:***

CCL23.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CCL23)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CCL23 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CCL23 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
CCL23.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CCL23.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CCL23.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CCL23 WestAfr ancestry plot with box plot (Color):***

CCL23.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CCL23, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CCL23 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CCL23 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
CCL23.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CCL23.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CCL23.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CD5 WestAfr ancestry plot with mean bar:***

CD5.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CD5)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CD5 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CD5 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
CD5.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CD5.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CD5.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CD5 WestAfr ancestry plot with box plot (Color):***

CD5.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CD5, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CD5 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CD5 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
CD5.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CD5.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CD5.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CCL3 WestAfr ancestry plot with mean bar:***

CCL3.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CCL3)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CCL3 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CCL3 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
CCL3.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CCL3.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CCL3.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CCL3 WestAfr ancestry plot with box plot (Color):***

CCL3.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CCL3, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CCL3 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CCL3 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
CCL3.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CCL3.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CCL3.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

MMP7 WestAfr ancestry plot with mean bar:***

MMP7.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=MMP7)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("MMP7 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("MMP7 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
MMP7.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
MMP7.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = MMP7.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

MMP7 WestAfr ancestry plot with box plot (Color):***

MMP7.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=MMP7, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("MMP7 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("MMP7 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
MMP7.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
MMP7.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = MMP7.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

NCR1 WestAfr ancestry plot with mean bar:***

NCR1.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=NCR1)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("NCR1 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("NCR1 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
NCR1.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
NCR1.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = NCR1.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

NCR1 WestAfr ancestry plot with box plot (Color):***

NCR1.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=NCR1, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("NCR1 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("NCR1 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
NCR1.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
NCR1.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = NCR1.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

DCN WestAfr ancestry plot with mean bar:***

DCN.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=DCN)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("DCN \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("DCN Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
DCN.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
DCN.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = DCN.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

DCN WestAfr ancestry plot with box plot (Color):***

DCN.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=DCN, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("DCN \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("DCN Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
DCN.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
DCN.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = DCN.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

TNFRSF21 WestAfr ancestry plot with mean bar:***

TNFRSF21.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=TNFRSF21)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("TNFRSF21 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("TNFRSF21 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
TNFRSF21.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
TNFRSF21.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = TNFRSF21.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

TNFRSF21 WestAfr ancestry plot with box plot (Color):***

TNFRSF21.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=TNFRSF21, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("TNFRSF21 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("TNFRSF21 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
TNFRSF21.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
TNFRSF21.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = TNFRSF21.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

TNFRSF4 WestAfr ancestry plot with mean bar:***

TNFRSF4.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=TNFRSF4)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("TNFRSF4 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("TNFRSF4 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
TNFRSF4.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
TNFRSF4.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = TNFRSF4.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

TNFRSF4 WestAfr ancestry plot with box plot (Color):***

TNFRSF4.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=TNFRSF4, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("TNFRSF4 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("TNFRSF4 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
TNFRSF4.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
TNFRSF4.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = TNFRSF4.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CCL17 WestAfr ancestry plot with mean bar:***

CCL17.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CCL17)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CCL17 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CCL17 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
CCL17.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CCL17.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CCL17.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CCL17 WestAfr ancestry plot with box plot (Color):***

CCL17.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CCL17, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CCL17 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CCL17 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
CCL17.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CCL17.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CCL17.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

ANGPT2 WestAfr ancestry plot with mean bar:***

ANGPT2.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=ANGPT2)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("ANGPT2 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("ANGPT2 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
ANGPT2.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
ANGPT2.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = ANGPT2.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

ANGPT2 WestAfr ancestry plot with box plot (Color):***

ANGPT2.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=ANGPT2, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("ANGPT2 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("ANGPT2 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
ANGPT2.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
ANGPT2.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = ANGPT2.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

LAMP3 WestAfr ancestry plot with mean bar:***

LAMP3.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=LAMP3)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("LAMP3 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("LAMP3 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
LAMP3.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
LAMP3.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = LAMP3.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

LAMP3 WestAfr ancestry plot with box plot (Color):***

LAMP3.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=LAMP3, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("LAMP3 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("LAMP3 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
LAMP3.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
LAMP3.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = LAMP3.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CASP8 WestAfr ancestry plot with mean bar:***

CASP8.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CASP8)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CASP8 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CASP8 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
CASP8.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CASP8.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CASP8.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CASP8 WestAfr ancestry plot with box plot (Color):***

CASP8.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CASP8, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CASP8 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CASP8 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
CASP8.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CASP8.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CASP8.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

ICOSLG WestAfr ancestry plot with mean bar:***

ICOSLG.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=ICOSLG)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("ICOSLG \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("ICOSLG Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
ICOSLG.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
ICOSLG.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = ICOSLG.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

ICOSLG WestAfr ancestry plot with box plot (Color):***

ICOSLG.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=ICOSLG, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("ICOSLG \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("ICOSLG Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
ICOSLG.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
ICOSLG.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = ICOSLG.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

MMP12 WestAfr ancestry plot with mean bar:***

MMP12.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=MMP12)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("MMP12 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("MMP12 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
MMP12.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
MMP12.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = MMP12.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

MMP12 WestAfr ancestry plot with box plot (Color):***

MMP12.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=MMP12, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("MMP12 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("MMP12 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
MMP12.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
MMP12.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = MMP12.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CXCL13 WestAfr ancestry plot with mean bar:***

CXCL13.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CXCL13)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CXCL13 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CXCL13 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
CXCL13.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CXCL13.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CXCL13.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CXCL13 WestAfr ancestry plot with box plot (Color):***

CXCL13.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CXCL13, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CXCL13 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CXCL13 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
CXCL13.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CXCL13.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CXCL13.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

VEGFA WestAfr ancestry plot with mean bar:***

VEGFA.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=VEGFA)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("VEGFA \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("VEGFA Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
VEGFA.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
VEGFA.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = VEGFA.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

VEGFA WestAfr ancestry plot with box plot (Color):***

VEGFA.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=VEGFA, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("VEGFA \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("VEGFA Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
VEGFA.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
VEGFA.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = VEGFA.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CCL20 WestAfr ancestry plot with mean bar:***

CCL20.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CCL20)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CCL20 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CCL20 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
CCL20.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CCL20.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CCL20.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CCL20 WestAfr ancestry plot with box plot (Color):***

CCL20.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CCL20, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CCL20 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CCL20 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
CCL20.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CCL20.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CCL20.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

KLRD1 WestAfr ancestry plot with mean bar:***

KLRD1.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=KLRD1)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("KLRD1 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("KLRD1 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
KLRD1.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
KLRD1.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = KLRD1.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

KLRD1 WestAfr ancestry plot with box plot (Color):***

KLRD1.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=KLRD1, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("KLRD1 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("KLRD1 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
KLRD1.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
KLRD1.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = KLRD1.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

GZMB WestAfr ancestry plot with mean bar:***

GZMB.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=GZMB)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("GZMB \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("GZMB Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
GZMB.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
GZMB.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = GZMB.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

GZMB WestAfr ancestry plot with box plot (Color):***

GZMB.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=GZMB, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("GZMB \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("GZMB Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
GZMB.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
GZMB.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = GZMB.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CD83 WestAfr ancestry plot with mean bar:***

CD83.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CD83)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CD83 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CD83 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
CD83.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CD83.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CD83.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CD83 WestAfr ancestry plot with box plot (Color):***

CD83.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CD83, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CD83 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CD83 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
CD83.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CD83.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CD83.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

IL12 WestAfr ancestry plot with mean bar:***

IL12.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=IL12)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("IL12 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("IL12 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
IL12.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
IL12.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = IL12.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

IL12 WestAfr ancestry plot with box plot (Color):***

IL12.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=IL12, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("IL12 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("IL12 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
IL12.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
IL12.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = IL12.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CSF1 WestAfr ancestry plot with mean bar:***

CSF1.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CSF1)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CSF1 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CSF1 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
CSF1.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CSF1.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CSF1.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CSF1 WestAfr ancestry plot with box plot (Color):***

CSF1.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CSF1, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CSF1 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CSF1 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
CSF1.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CSF1.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CSF1.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

ARG1 WestAfr ancestry plot with mean bar:***

ARG1.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=ARG1)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("ARG1 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("ARG1 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
ARG1.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
ARG1.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = ARG1.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

ARG1 WestAfr ancestry plot with box plot (Color):***

ARG1.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=ARG1, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("ARG1 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("ARG1 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
ARG1.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
ARG1.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = ARG1.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

IL4 WestAfr ancestry plot with mean bar:***

IL4.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=IL4)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("IL4 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("IL4 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
IL4.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
IL4.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = IL4.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

IL4 WestAfr ancestry plot with box plot (Color):***

IL4.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=IL4, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("IL4 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("IL4 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
IL4.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
IL4.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = IL4.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

IL5 WestAfr ancestry plot with mean bar:***

IL5.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=IL5)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("IL5 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("IL5 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
IL5.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
IL5.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = IL5.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

IL5 WestAfr ancestry plot with box plot (Color):***

IL5.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=IL5, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("IL5 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("IL5 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
IL5.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
IL5.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = IL5.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CD28 WestAfr ancestry plot with mean bar:***

CD28.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CD28)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CD28 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CD28 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
CD28.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CD28.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CD28.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CD28 WestAfr ancestry plot with box plot (Color):***

CD28.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CD28, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CD28 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CD28 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
CD28.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CD28.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CD28.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

FGF2 WestAfr ancestry plot with mean bar:***

FGF2.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=FGF2)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("FGF2 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("FGF2 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
FGF2.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
FGF2.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = FGF2.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

FGF2 WestAfr ancestry plot with box plot (Color):***

FGF2.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=FGF2, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("FGF2 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("FGF2 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
FGF2.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
FGF2.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = FGF2.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

NOS3 WestAfr ancestry plot with mean bar:***

NOS3.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=NOS3)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("NOS3 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("NOS3 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
NOS3.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
NOS3.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = NOS3.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

NOS3 WestAfr ancestry plot with box plot (Color):***

NOS3.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=NOS3, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("NOS3 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("NOS3 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
NOS3.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
NOS3.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = NOS3.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

ADGRG1 WestAfr ancestry plot with mean bar:***

ADGRG1.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=ADGRG1)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("ADGRG1 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("ADGRG1 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
ADGRG1.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
ADGRG1.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = ADGRG1.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

ADGRG1 WestAfr ancestry plot with box plot (Color):***

ADGRG1.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=ADGRG1, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("ADGRG1 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("ADGRG1 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
ADGRG1.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
ADGRG1.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = ADGRG1.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

MICAB WestAfr ancestry plot with mean bar:***

MICAB.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=MICAB)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("MICAB \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("MICAB Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
MICAB.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
MICAB.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = MICAB.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

MICAB WestAfr ancestry plot with box plot (Color):***

MICAB.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=MICAB, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("MICAB \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("MICAB Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
MICAB.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
MICAB.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = MICAB.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CD4 WestAfr ancestry plot with mean bar:***

CD4.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CD4)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CD4 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CD4 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
CD4.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CD4.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CD4.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CD4 WestAfr ancestry plot with box plot (Color):***

CD4.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CD4, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CD4 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CD4 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
CD4.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CD4.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CD4.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

IL10 WestAfr ancestry plot with mean bar:***

IL10.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=IL10)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("IL10 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("IL10 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
IL10.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
IL10.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = IL10.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

IL10 WestAfr ancestry plot with box plot (Color):***

IL10.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=IL10, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("IL10 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("IL10 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
IL10.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
IL10.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = IL10.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CD8A WestAfr ancestry plot with mean bar:***

CD8A.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CD8A)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CD8A \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CD8A Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
CD8A.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CD8A.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CD8A.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CD8A WestAfr ancestry plot with box plot (Color):***

CD8A.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CD8A, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CD8A \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CD8A Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
CD8A.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CD8A.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CD8A.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CCL19 WestAfr ancestry plot with mean bar:***

CCL19.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CCL19)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CCL19 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CCL19 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
CCL19.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CCL19.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CCL19.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CCL19 WestAfr ancestry plot with box plot (Color):***

CCL19.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CCL19, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CCL19 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CCL19 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
CCL19.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CCL19.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CCL19.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CXCL10 WestAfr ancestry plot with mean bar:***

CXCL10.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CXCL10)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CXCL10 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CXCL10 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
CXCL10.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CXCL10.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CXCL10.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CXCL10 WestAfr ancestry plot with box plot (Color):***

CXCL10.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CXCL10, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CXCL10 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CXCL10 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
CXCL10.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CXCL10.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CXCL10.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

PTN WestAfr ancestry plot with mean bar:***

PTN.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=PTN)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("PTN \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("PTN Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
PTN.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
PTN.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = PTN.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

PTN WestAfr ancestry plot with box plot (Color):***

PTN.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=PTN, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("PTN \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("PTN Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
PTN.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
PTN.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = PTN.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

IL12RB1 WestAfr ancestry plot with mean bar:***

IL12RB1.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=IL12RB1)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("IL12RB1 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("IL12RB1 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
IL12RB1.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
IL12RB1.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = IL12RB1.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

IL12RB1 WestAfr ancestry plot with box plot (Color):***

IL12RB1.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=IL12RB1, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("IL12RB1 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("IL12RB1 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
IL12RB1.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
IL12RB1.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = IL12RB1.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

VEGFC WestAfr ancestry plot with mean bar:***

VEGFC.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=VEGFC)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("VEGFC \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("VEGFC Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
VEGFC.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
VEGFC.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = VEGFC.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

VEGFC WestAfr ancestry plot with box plot (Color):***

VEGFC.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=VEGFC, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("VEGFC \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("VEGFC Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
VEGFC.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
VEGFC.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = VEGFC.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

MCP3 WestAfr ancestry plot with mean bar:***

MCP3.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=MCP3)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("MCP3 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("MCP3 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
MCP3.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
MCP3.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = MCP3.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

MCP3 WestAfr ancestry plot with box plot (Color):***

MCP3.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=MCP3, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("MCP3 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("MCP3 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
MCP3.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
MCP3.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = MCP3.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CXCL5 WestAfr ancestry plot with mean bar:***

CXCL5.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CXCL5)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CXCL5 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CXCL5 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
CXCL5.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CXCL5.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CXCL5.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CXCL5 WestAfr ancestry plot with box plot (Color):***

CXCL5.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CXCL5, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CXCL5 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CXCL5 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
CXCL5.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CXCL5.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CXCL5.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CXCL11 WestAfr ancestry plot with mean bar:***

CXCL11.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CXCL11)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CXCL11 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CXCL11 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
CXCL11.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CXCL11.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CXCL11.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

CXCL11 WestAfr ancestry plot with box plot (Color):***

CXCL11.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=CXCL11, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("CXCL11 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("CXCL11 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
CXCL11.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
CXCL11.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = CXCL11.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

PDL2 WestAfr ancestry plot with mean bar:***

PDL2.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=PDL2)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("PDL2 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("PDL2 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
PDL2.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
PDL2.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = PDL2.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

PDL2 WestAfr ancestry plot with box plot (Color):***

PDL2.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=PDL2, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("PDL2 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("PDL2 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
PDL2.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
PDL2.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = PDL2.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

LAPTGFbeta1 WestAfr ancestry plot with mean bar:***

LAPTGFbeta1.plot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=LAPTGFbeta1)) + 
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("LAPTGFbeta1 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("LAPTGFbeta1 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5))
#create mean comparison groups
LAPTGFbeta1.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
LAPTGFbeta1.plot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = LAPTGFbeta1.compare)
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).

LAPTGFbeta1 WestAfr ancestry plot with box plot (Color):***

LAPTGFbeta1.cplot <- ggplot(data=WestAfrlab, aes(x=WestAfrPerLab, y=LAPTGFbeta1, colour = WestAfrPerLab)) + 
  geom_boxplot() +
  theme_classic() +
  geom_jitter(position=position_jitter(0.1)) + 
  stat_summary(fun = median, fun.min = median, fun.max = median, geom = "crossbar", width = 0.5) + 
  xlab("% of WestAfr") + 
  ylab("LAPTGFbeta1 \n (pg/mL)") + 
  scale_x_discrete(limit = c("Low","Mid","High")) + 
  ggtitle("LAPTGFbeta1 Levels by \n Ancestry") + 
  theme(plot.title = element_text(hjust = 0.5), legend.position = "none")
#create mean comparison groups
LAPTGFbeta1.compare <- list( c("Low", "Mid"), c("Mid", "High"), c("Low", "High"))

#add p-value to plot while comparing means
LAPTGFbeta1.cplot + stat_compare_means(method = "t.test", label.y = 3500) +
# Visualize: Specify the comparisons you want
 stat_compare_means(method = 't.test', comparisons = LAPTGFbeta1.compare)
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_summary()`).
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_compare_means()`).
## Warning: Unknown or uninitialised column: `p`.
## Warning: Computation failed in `stat_compare_means()`.
## Caused by error:
## ! argument "x" is missing, with no default
## Warning: Removed 211 rows containing non-finite outside the scale range
## (`stat_signif()`).
## Warning: Removed 211 rows containing missing values or values outside the scale range
## (`geom_point()`).