This is my data:
dput(data)
structure(list(col1 = c("AnnoPred", "AnnoPred", "AnnoPred", "AnnoPred",
"AnnoPred", "AnnoPred", "AnnoPred", "AnnoPred", "AnnoPred", "AnnoPred",
"AnnoPred", "AnnoPred", "AnnoPred", "AnnoPred", "AnnoPred", "AnnoPred",
"AnnoPred", "AnnoPred", "AnnoPred", "AnnoPred", "AnnoPred", "AnnoPred",
"AnnoPred", "AnnoPred", "AnnoPred", "AnnoPred", "AnnoPred", "AnnoPred",
"AnnoPred", "AnnoPred", "AnnoPred", "AnnoPred", "AnnoPred", "AnnoPred",
"BridgePRS", "BridgePRS", "BridgePRS", "BridgePRS", "BridgePRS",
"BridgePRS", "BridgePRS", "BridgePRS", "BridgePRS", "BridgePRS",
"BridgePRS", "BridgePRS", "BridgePRS", "BridgePRS", "BridgePRS",
"BridgePRS", "BridgePRS", "BridgePRS", "BridgePRS", "BridgePRS",
"BridgePRS", "BridgePRS", "BridgePRS", "BridgePRS", "BridgePRS",
"BridgePRS", "BridgePRS", "BridgePRS", "BridgePRS", "BridgePRS",
"BridgePRS", "BridgePRS", "BridgePRS", "CT-SLEB", "CT-SLEB",
"CT-SLEB", "CT-SLEB", "CT-SLEB", "CT-SLEB", "CT-SLEB", "CT-SLEB",
"CT-SLEB", "CT-SLEB", "CT-SLEB", "CT-SLEB", "CT-SLEB", "CT-SLEB",
"CT-SLEB", "CT-SLEB", "CT-SLEB", "CT-SLEB", "CT-SLEB", "CT-SLEB",
"CT-SLEB", "CT-SLEB", "CT-SLEB", "CT-SLEB", "CT-SLEB", "CT-SLEB",
"CT-SLEB", "CT-SLEB", "CT-SLEB", "CT-SLEB", "CT-SLEB", "CT-SLEB",
"DBSLMM", "DBSLMM", "DBSLMM", "DBSLMM", "DBSLMM", "DBSLMM", "DBSLMM",
"DBSLMM", "DBSLMM", "DBSLMM", "DBSLMM", "DBSLMM", "DBSLMM", "DBSLMM",
"DBSLMM", "DBSLMM", "DBSLMM", "DBSLMM", "DBSLMM", "DBSLMM", "DBSLMM",
"DBSLMM", "DBSLMM", "DBSLMM", "DBSLMM", "DBSLMM", "DBSLMM", "DBSLMM",
"DBSLMM", "DBSLMM", "DBSLMM", "EB-PRS", "EB-PRS", "EB-PRS", "EB-PRS",
"EB-PRS", "EB-PRS", "EB-PRS", "EB-PRS", "EB-PRS", "EB-PRS", "EB-PRS",
"EB-PRS", "EB-PRS", "EB-PRS", "EB-PRS", "EB-PRS", "EB-PRS", "EB-PRS",
"EB-PRS", "EB-PRS", "EB-PRS", "EB-PRS", "EB-PRS", "EB-PRS", "EB-PRS",
"EB-PRS", "EB-PRS", "EB-PRS", "EB-PRS", "EB-PRS", "Impute.me",
"Impute.me", "Impute.me", "Impute.me", "Impute.me", "Impute.me",
"Impute.me", "Impute.me", "Impute.me", "Impute.me", "Impute.me",
"Impute.me", "Impute.me", "Impute.me", "Impute.me", "Impute.me",
"Impute.me", "Impute.me", "Impute.me", "Impute.me", "Impute.me",
"Impute.me", "Impute.me", "Impute.me", "Impute.me", "Impute.me",
"Impute.me", "Impute.me", "Impute.me", "IPRS", "IPRS", "IPRS",
"IPRS", "IPRS", "IPRS", "IPRS", "IPRS", "IPRS", "IPRS", "IPRS",
"IPRS", "IPRS", "IPRS", "IPRS", "IPRS", "IPRS", "IPRS", "IPRS",
"IPRS", "IPRS", "IPRS", "IPRS", "IPRS", "IPRS", "IPRS", "IPRS",
"IPRS", "JAMpred", "JAMpred", "JAMpred", "JAMpred", "JAMpred",
"JAMpred", "JAMpred", "JAMpred", "JAMpred", "JAMpred", "JAMpred",
"JAMpred", "JAMpred", "JAMpred", "JAMpred", "JAMpred", "JAMpred",
"JAMpred", "JAMpred", "JAMpred", "JAMpred", "JAMpred", "JAMpred",
"JAMpred", "JAMpred", "JAMpred", "JAMpred", "lassosum", "lassosum",
"lassosum", "lassosum", "lassosum", "lassosum", "lassosum", "lassosum",
"lassosum", "lassosum", "lassosum", "lassosum", "lassosum", "lassosum",
"lassosum", "lassosum", "lassosum", "lassosum", "lassosum", "lassosum",
"lassosum", "lassosum", "lassosum", "lassosum", "lassosum", "lassosum",
"LDAK", "LDAK", "LDAK", "LDAK", "LDAK", "LDAK", "LDAK", "LDAK",
"LDAK", "LDAK", "LDAK", "LDAK", "LDAK", "LDAK", "LDAK", "LDAK",
"LDAK", "LDAK", "LDAK", "LDAK", "LDAK", "LDAK", "LDAK", "LDAK",
"LDAK", "LDPred", "LDPred", "LDPred", "LDPred", "LDPred", "LDPred",
"LDPred", "LDPred", "LDPred", "LDPred", "LDPred", "LDPred", "LDPred",
"LDPred", "LDPred", "LDPred", "LDPred", "LDPred", "LDPred", "LDPred",
"LDPred", "LDPred", "LDPred", "LDPred", "LDpred2", "LDpred2",
"LDpred2", "LDpred2", "LDpred2", "LDpred2", "LDpred2", "LDpred2",
"LDpred2", "LDpred2", "LDpred2", "LDpred2", "LDpred2", "LDpred2",
"LDpred2", "LDpred2", "LDpred2", "LDpred2", "LDpred2", "LDpred2",
"LDpred2", "LDpred2", "LDpred2", "LDpred-funct", "LDpred-funct",
"LDpred-funct", "LDpred-funct", "LDpred-funct", "LDpred-funct",
"LDpred-funct", "LDpred-funct", "LDpred-funct", "LDpred-funct",
"LDpred-funct", "LDpred-funct", "LDpred-funct", "LDpred-funct",
"LDpred-funct", "LDpred-funct", "LDpred-funct", "LDpred-funct",
"LDpred-funct", "LDpred-funct", "LDpred-funct", "LDpred-funct",
"meta-PRS", "meta-PRS", "meta-PRS", "meta-PRS", "meta-PRS", "meta-PRS",
"meta-PRS", "meta-PRS", "meta-PRS", "meta-PRS", "meta-PRS", "meta-PRS",
"meta-PRS", "meta-PRS", "meta-PRS", "meta-PRS", "meta-PRS", "meta-PRS",
"meta-PRS", "meta-PRS", "meta-PRS", "NEBULA", "NEBULA", "NEBULA",
"NEBULA", "NEBULA", "NEBULA", "NEBULA", "NEBULA", "NEBULA", "NEBULA",
"NEBULA", "NEBULA", "NEBULA", "NEBULA", "NEBULA", "NEBULA", "NEBULA",
"NEBULA", "NEBULA", "NEBULA", "NPS", "NPS", "NPS", "NPS", "NPS",
"NPS", "NPS", "NPS", "NPS", "NPS", "NPS", "NPS", "NPS", "NPS",
"NPS", "NPS", "NPS", "NPS", "NPS", "PGS-server", "PGS-server",
"PGS-server", "PGS-server", "PGS-server", "PGS-server", "PGS-server",
"PGS-server", "PGS-server", "PGS-server", "PGS-server", "PGS-server",
"PGS-server", "PGS-server", "PGS-server", "PGS-server", "PGS-server",
"PGS-server", "PleioPred", "PleioPred", "PleioPred", "PleioPred",
"PleioPred", "PleioPred", "PleioPred", "PleioPred", "PleioPred",
"PleioPred", "PleioPred", "PleioPred", "PleioPred", "PleioPred",
"PleioPred", "PleioPred", "PleioPred", "PolyPred", "PolyPred",
"PolyPred", "PolyPred", "PolyPred", "PolyPred", "PolyPred", "PolyPred",
"PolyPred", "PolyPred", "PolyPred", "PolyPred", "PolyPred", "PolyPred",
"PolyPred", "PolyPred", "PRS-CS", "PRS-CS", "PRS-CS", "PRS-CS",
"PRS-CS", "PRS-CS", "PRS-CS", "PRS-CS", "PRS-CS", "PRS-CS", "PRS-CS",
"PRS-CS", "PRS-CS", "PRS-CS", "PRS-CS", "PRS-CSx", "PRS-CSx",
"PRS-CSx", "PRS-CSx", "PRS-CSx", "PRS-CSx", "PRS-CSx", "PRS-CSx",
"PRS-CSx", "PRS-CSx", "PRS-CSx", "PRS-CSx", "PRS-CSx", "PRS-CSx",
"PRSet", "PRSet", "PRSet", "PRSet", "PRSet", "PRSet", "PRSet",
"PRSet", "PRSet", "PRSet", "PRSet", "PRSet", "PRSet", "PRSice",
"PRSice", "PRSice", "PRSice", "PRSice", "PRSice", "PRSice", "PRSice",
"PRSice", "PRSice", "PRSice", "PRSice", "PRSice-2", "PRSice-2",
"PRSice-2", "PRSice-2", "PRSice-2", "PRSice-2", "PRSice-2", "PRSice-2",
"PRSice-2", "PRSice-2", "PRSice-2", "SBayesR", "SBayesR", "SBayesR",
"SBayesR", "SBayesR", "SBayesR", "SBayesR", "SBayesR", "SBayesR",
"SBayesR", "SDPR", "SDPR", "SDPR", "SDPR", "SDPR", "SDPR", "SDPR",
"SDPR", "SDPR", "SDPRX", "SDPRX", "SDPRX", "SDPRX", "SDPRX",
"SDPRX", "SDPRX", "SDPRX", "TL-Multi", "TL-Multi", "TL-Multi",
"TL-Multi", "TL-Multi", "TL-Multi", "TL-Multi", "TL-PRS/MTL-PRS",
"TL-PRS/MTL-PRS", "TL-PRS/MTL-PRS", "TL-PRS/MTL-PRS", "TL-PRS/MTL-PRS",
"TL-PRS/MTL-PRS", "VIPRS", "VIPRS", "VIPRS", "VIPRS", "VIPRS",
"XPA/XPASS", "XPA/XPASS", "XPA/XPASS", "XPA/XPASS", "XP-BLUP",
"XP-BLUP", "XP-BLUP", "XPXP", "XPXP", "X-Wing"), col2 = c("AnnoPred",
"BridgePRS", "CT-SLEB", "DBSLMM", "EB-PRS", "Impute.me", "IPRS",
"JAMpred", "lassosum", "LDAK", "LDPred", "LDpred2", "LDpred-funct",
"meta-PRS", "NEBULA", "NPS", "PGS-server", "PleioPred", "PolyPred",
"PRS-CS", "PRS-CSx", "PRSet", "PRSice", "PRSice-2", "SBayesR",
"SDPR", "SDPRX", "TL-Multi", "TL-PRS/MTL-PRS", "VIPRS", "XPA/XPASS",
"XP-BLUP", "XPXP", "X-Wing", "BridgePRS", "CT-SLEB", "DBSLMM",
"EB-PRS", "Impute.me", "IPRS", "JAMpred", "lassosum", "LDAK",
"LDPred", "LDpred2", "LDpred-funct", "meta-PRS", "NEBULA", "NPS",
"PGS-server", "PleioPred", "PolyPred", "PRS-CS", "PRS-CSx", "PRSet",
"PRSice", "PRSice-2", "SBayesR", "SDPR", "SDPRX", "TL-Multi",
"TL-PRS/MTL-PRS", "VIPRS", "XPA/XPASS", "XP-BLUP", "XPXP", "X-Wing",
"CT-SLEB", "DBSLMM", "EB-PRS", "Impute.me", "IPRS", "JAMpred",
"lassosum", "LDAK", "LDPred", "LDpred2", "LDpred-funct", "meta-PRS",
"NEBULA", "NPS", "PGS-server", "PleioPred", "PolyPred", "PRS-CS",
"PRS-CSx", "PRSet", "PRSice", "PRSice-2", "SBayesR", "SDPR",
"SDPRX", "TL-Multi", "TL-PRS/MTL-PRS", "VIPRS", "XPA/XPASS",
"XP-BLUP", "XPXP", "X-Wing", "DBSLMM", "EB-PRS", "Impute.me",
"IPRS", "JAMpred", "lassosum", "LDAK", "LDPred", "LDpred2", "LDpred-funct",
"meta-PRS", "NEBULA", "NPS", "PGS-server", "PleioPred", "PolyPred",
"PRS-CS", "PRS-CSx", "PRSet", "PRSice", "PRSice-2", "SBayesR",
"SDPR", "SDPRX", "TL-Multi", "TL-PRS/MTL-PRS", "VIPRS", "XPA/XPASS",
"XP-BLUP", "XPXP", "X-Wing", "EB-PRS", "Impute.me", "IPRS", "JAMpred",
"lassosum", "LDAK", "LDPred", "LDpred2", "LDpred-funct", "meta-PRS",
"NEBULA", "NPS", "PGS-server", "PleioPred", "PolyPred", "PRS-CS",
"PRS-CSx", "PRSet", "PRSice", "PRSice-2", "SBayesR", "SDPR",
"SDPRX", "TL-Multi", "TL-PRS/MTL-PRS", "VIPRS", "XPA/XPASS",
"XP-BLUP", "XPXP", "X-Wing", "Impute.me", "IPRS", "JAMpred",
"lassosum", "LDAK", "LDPred", "LDpred2", "LDpred-funct", "meta-PRS",
"NEBULA", "NPS", "PGS-server", "PleioPred", "PolyPred", "PRS-CS",
"PRS-CSx", "PRSet", "PRSice", "PRSice-2", "SBayesR", "SDPR",
"SDPRX", "TL-Multi", "TL-PRS/MTL-PRS", "VIPRS", "XPA/XPASS",
"XP-BLUP", "XPXP", "X-Wing", "IPRS", "JAMpred", "lassosum", "LDAK",
"LDPred", "LDpred2", "LDpred-funct", "meta-PRS", "NEBULA", "NPS",
"PGS-server", "PleioPred", "PolyPred", "PRS-CS", "PRS-CSx", "PRSet",
"PRSice", "PRSice-2", "SBayesR", "SDPR", "SDPRX", "TL-Multi",
"TL-PRS/MTL-PRS", "VIPRS", "XPA/XPASS", "XP-BLUP", "XPXP", "X-Wing",
"JAMpred", "lassosum", "LDAK", "LDPred", "LDpred2", "LDpred-funct",
"meta-PRS", "NEBULA", "NPS", "PGS-server", "PleioPred", "PolyPred",
"PRS-CS", "PRS-CSx", "PRSet", "PRSice", "PRSice-2", "SBayesR",
"SDPR", "SDPRX", "TL-Multi", "TL-PRS/MTL-PRS", "VIPRS", "XPA/XPASS",
"XP-BLUP", "XPXP", "X-Wing", "lassosum", "LDAK", "LDPred", "LDpred2",
"LDpred-funct", "meta-PRS", "NEBULA", "NPS", "PGS-server", "PleioPred",
"PolyPred", "PRS-CS", "PRS-CSx", "PRSet", "PRSice", "PRSice-2",
"SBayesR", "SDPR", "SDPRX", "TL-Multi", "TL-PRS/MTL-PRS", "VIPRS",
"XPA/XPASS", "XP-BLUP", "XPXP", "X-Wing", "LDAK", "LDPred", "LDpred2",
"LDpred-funct", "meta-PRS", "NEBULA", "NPS", "PGS-server", "PleioPred",
"PolyPred", "PRS-CS", "PRS-CSx", "PRSet", "PRSice", "PRSice-2",
"SBayesR", "SDPR", "SDPRX", "TL-Multi", "TL-PRS/MTL-PRS", "VIPRS",
"XPA/XPASS", "XP-BLUP", "XPXP", "X-Wing", "LDPred", "LDpred2",
"LDpred-funct", "meta-PRS", "NEBULA", "NPS", "PGS-server", "PleioPred",
"PolyPred", "PRS-CS", "PRS-CSx", "PRSet", "PRSice", "PRSice-2",
"SBayesR", "SDPR", "SDPRX", "TL-Multi", "TL-PRS/MTL-PRS", "VIPRS",
"XPA/XPASS", "XP-BLUP", "XPXP", "X-Wing", "LDpred2", "LDpred-funct",
"meta-PRS", "NEBULA", "NPS", "PGS-server", "PleioPred", "PolyPred",
"PRS-CS", "PRS-CSx", "PRSet", "PRSice", "PRSice-2", "SBayesR",
"SDPR", "SDPRX", "TL-Multi", "TL-PRS/MTL-PRS", "VIPRS", "XPA/XPASS",
"XP-BLUP", "XPXP", "X-Wing", "LDpred-funct", "meta-PRS", "NEBULA",
"NPS", "PGS-server", "PleioPred", "PolyPred", "PRS-CS", "PRS-CSx",
"PRSet", "PRSice", "PRSice-2", "SBayesR", "SDPR", "SDPRX", "TL-Multi",
"TL-PRS/MTL-PRS", "VIPRS", "XPA/XPASS", "XP-BLUP", "XPXP", "X-Wing",
"meta-PRS", "NEBULA", "NPS", "PGS-server", "PleioPred", "PolyPred",
"PRS-CS", "PRS-CSx", "PRSet", "PRSice", "PRSice-2", "SBayesR",
"SDPR", "SDPRX", "TL-Multi", "TL-PRS/MTL-PRS", "VIPRS", "XPA/XPASS",
"XP-BLUP", "XPXP", "X-Wing", "NEBULA", "NPS", "PGS-server", "PleioPred",
"PolyPred", "PRS-CS", "PRS-CSx", "PRSet", "PRSice", "PRSice-2",
"SBayesR", "SDPR", "SDPRX", "TL-Multi", "TL-PRS/MTL-PRS", "VIPRS",
"XPA/XPASS", "XP-BLUP", "XPXP", "X-Wing", "NPS", "PGS-server",
"PleioPred", "PolyPred", "PRS-CS", "PRS-CSx", "PRSet", "PRSice",
"PRSice-2", "SBayesR", "SDPR", "SDPRX", "TL-Multi", "TL-PRS/MTL-PRS",
"VIPRS", "XPA/XPASS", "XP-BLUP", "XPXP", "X-Wing", "PGS-server",
"PleioPred", "PolyPred", "PRS-CS", "PRS-CSx", "PRSet", "PRSice",
"PRSice-2", "SBayesR", "SDPR", "SDPRX", "TL-Multi", "TL-PRS/MTL-PRS",
"VIPRS", "XPA/XPASS", "XP-BLUP", "XPXP", "X-Wing", "PleioPred",
"PolyPred", "PRS-CS", "PRS-CSx", "PRSet", "PRSice", "PRSice-2",
"SBayesR", "SDPR", "SDPRX", "TL-Multi", "TL-PRS/MTL-PRS", "VIPRS",
"XPA/XPASS", "XP-BLUP", "XPXP", "X-Wing", "PolyPred", "PRS-CS",
"PRS-CSx", "PRSet", "PRSice", "PRSice-2", "SBayesR", "SDPR",
"SDPRX", "TL-Multi", "TL-PRS/MTL-PRS", "VIPRS", "XPA/XPASS",
"XP-BLUP", "XPXP", "X-Wing", "PRS-CS", "PRS-CSx", "PRSet", "PRSice",
"PRSice-2", "SBayesR", "SDPR", "SDPRX", "TL-Multi", "TL-PRS/MTL-PRS",
"VIPRS", "XPA/XPASS", "XP-BLUP", "XPXP", "X-Wing", "PRS-CSx",
"PRSet", "PRSice", "PRSice-2", "SBayesR", "SDPR", "SDPRX", "TL-Multi",
"TL-PRS/MTL-PRS", "VIPRS", "XPA/XPASS", "XP-BLUP", "XPXP", "X-Wing",
"PRSet", "PRSice", "PRSice-2", "SBayesR", "SDPR", "SDPRX", "TL-Multi",
"TL-PRS/MTL-PRS", "VIPRS", "XPA/XPASS", "XP-BLUP", "XPXP", "X-Wing",
"PRSice", "PRSice-2", "SBayesR", "SDPR", "SDPRX", "TL-Multi",
"TL-PRS/MTL-PRS", "VIPRS", "XPA/XPASS", "XP-BLUP", "XPXP", "X-Wing",
"PRSice-2", "SBayesR", "SDPR", "SDPRX", "TL-Multi", "TL-PRS/MTL-PRS",
"VIPRS", "XPA/XPASS", "XP-BLUP", "XPXP", "X-Wing", "SBayesR",
"SDPR", "SDPRX", "TL-Multi", "TL-PRS/MTL-PRS", "VIPRS", "XPA/XPASS",
"XP-BLUP", "XPXP", "X-Wing", "SDPR", "SDPRX", "TL-Multi", "TL-PRS/MTL-PRS",
"VIPRS", "XPA/XPASS", "XP-BLUP", "XPXP", "X-Wing", "SDPRX", "TL-Multi",
"TL-PRS/MTL-PRS", "VIPRS", "XPA/XPASS", "XP-BLUP", "XPXP", "X-Wing",
"TL-Multi", "TL-PRS/MTL-PRS", "VIPRS", "XPA/XPASS", "XP-BLUP",
"XPXP", "X-Wing", "TL-PRS/MTL-PRS", "VIPRS", "XPA/XPASS", "XP-BLUP",
"XPXP", "X-Wing", "VIPRS", "XPA/XPASS", "XP-BLUP", "XPXP", "X-Wing",
"XPA/XPASS", "XP-BLUP", "XPXP", "X-Wing", "XP-BLUP", "XPXP",
"X-Wing", "XPXP", "X-Wing", "X-Wing"), accuracy = c(NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, 2L, NA, -1L, NA, NA, NA, NA, -2L,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, 2L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, -2L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, 2L, NA, 2L, NA, NA, NA, NA, NA, -2L,
NA, NA, NA, NA, NA, NA, NA, NA, NA, -2L, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, 2L, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, -2L, 2L, NA, NA, NA, NA, NA, -2L, NA, NA,
NA, NA, NA, NA, -2L, NA, NA, -2L, NA, -2L, NA, NA, NA, NA, NA,
NA, 2L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, -2L, -2L, NA, NA, -2L,
NA, -2L, NA, -2L, NA, NA, NA, -2L, -2L, NA, NA, NA, NA, NA, -2L,
NA, -2L, NA, NA, NA, NA, NA, NA, -2L, NA, NA, 2L, -2L, NA, NA,
NA, NA, NA, -2L, NA, NA, NA, NA, NA, -2L, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, -2L, NA, NA,
2L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, 2L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, 2L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, -2L, NA, NA, NA, NA, NA, NA, NA, NA, NA, -2L, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, -2L, NA, -2L, NA, NA, NA, -2L,
-2L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
-2L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 2L, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, -2L, NA, NA, NA, NA, NA, NA), speed = c(NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, 2L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, 1L, NA, 2L, 2L, NA, NA, NA, NA, NA,
NA, NA, NA, 2L, NA, NA, NA, NA, -1L, 2L, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, 2L, NA, NA, NA, NA, NA, NA, NA, NA, NA,
2L, NA, NA, NA, NA, -1L, 2L, NA, NA, NA, 2L, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, -2L, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, -2L,
NA, NA, NA, NA, -2L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, -2L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, -2L, NA, -2L, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, -2L, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA)), class = "data.frame", row.names = c(NA,
-595L))
I obtained separate heatmaps one for accuracy and one for speed using the following code (running this twice changeing only the line data_full$value <- data_full$accuracy
accordingly):
data <- read.csv("heatmap_scopingReview - Copy.csv")
head(data)
library(ggplot2)
library(reshape2)
methods <- unique(c(data$col1, data$col2))
full_combinations <- expand.grid(col1 = methods, col2 = methods)
data_full <- merge(full_combinations, data, by = c("col1", "col2"), all.x = TRUE)
data_full$value <- data_full$accuracy
# Melt for ggplot
melted_data <- melt(data_full, id.vars = c("col1", "col2"), measure.vars = "value")
# Identify diagonal elements
# Assuming 'col1' and 'col2' are factors with the same levels in the same order
melted_data$diagonal <- melted_data$col1 == melted_data$col2
# Plot
plot1 <- ggplot(melted_data, aes(x = col2, y = col1)) +
geom_tile(aes(fill = value), color = "grey", size = 0.1) + # Main heatmap layer
geom_tile(data = subset(melted_data, diagonal), fill = "grey") + # Diagonal in grey
scale_fill_gradient2(low = "dark red", high = "dark blue", midpoint = 0, mid = "white",
na.value = "white", limits = c(-2, 2), name = "y/x") +
labs(x = "x", y = "y", fill = "y/x") +
theme_minimal(base_size = 12) +
theme(axis.title.x = element_text(size = 14, angle = 0),
axis.title.y = element_text(size = 14, angle = 90),
axis.text.x = element_text(angle = 45, hjust = 1),
axis.text.y = element_text(angle = 0, vjust = 0.5),
panel.background = element_blank(), # Remove panel background
panel.grid.major = element_line(color = "grey", size = 0.2), # Customize major gridlines
panel.grid.minor = element_blank(), # Remove minor gridlines if not needed
legend.position = "right")
plot1
I obtained the following graphs:
What I need is to have the speed variable as the upper triangle and accuracy as the lower triangle of the same graph. It is better if I can have the diagonal from left bottom to right up too. Please help me to obtain the final output modifying this code.
Thanks
One option would be to use your original dataset and a geom_tile
for each of your variables where you switch the columns mapped on x
and y
:
library(ggplot2)
data$diagonal <- data$col1 == data$col2
diagonal <- subset(data, diagonal)
ggplot(data, aes()) +
geom_tile(aes(x = col2, y = col1, fill = speed),
color = "red", size = 0.1
) + # Speed heatmap
geom_tile(aes(x = col1, y = col2, fill = accuracy),
color = "blue", size = 0.1
) + # Accuracy heatmap layer
geom_tile(
data = diagonal, aes(x = col1, y = col1),
fill = "grey"
) + # Diagonal in grey
annotate(
"label",
x = -Inf, y = Inf,
label = "Accuracy",
hjust = 0, vjust = 1
) +
annotate(
"label",
x = Inf, y = -Inf,
label = "Speed",
hjust = 1, vjust = 0
) +
scale_fill_gradient2(
low = "dark red", high = "dark blue", midpoint = 0, mid = "white",
na.value = "white", limits = c(-2, 2), name = "y/x"
) +
labs(x = "x", y = "y", fill = "y/x") +
theme_minimal(base_size = 12) +
theme(
axis.title.x = element_text(size = 14, angle = 0),
axis.title.y = element_text(size = 14, angle = 90),
axis.text.x = element_text(angle = 45, hjust = 1),
axis.text.y = element_text(angle = 0, vjust = 0.5),
panel.background = element_blank(), # Remove panel background
panel.grid.major = element_line(color = "grey", size = 0.2), # Customize major gridlines
panel.grid.minor = element_blank(), # Remove minor gridlines if not needed
legend.position = "right"
)