以下是我的数据:

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))

我使用以下代码获得了单独的热图,一个是关于精度的,另一个是关于速度的(运行两次,只相应地更改行data_full$value <- data_full$accuracy):

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: enter image description here

enter image description here

我需要的是将速度变量作为上三角形,并将精度作为同一图形的下三角形.如果从左下角到右上角的对角线也可以的话就更好了.请帮助我获得修改此代码的最终输出.

谢谢

推荐答案

一种 Select 是使用原始数据集,并 for each 变量使用geom_tile,其中切换映射到xy上的列:

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"
  )

enter image description here

R相关问答推荐

使用spatVector裁剪网格数据时出现的问题

带有gplot 2的十字舱口

根据收件箱中的特定值提取列名

如何删除gggvenn与gggplot绘制的空白?

如何从当前行上方找到符合特定条件的最接近值?

在另一个函数中调用ggplot2美学

在R中,如何在每个堆叠的条上放置误差条,特别是当使用facet_grid时?

使用strsplit()将向量操作为数据框

如何根据R中其他列的值有条件地从列中提取数据?

是否可以创建一个ggplot与整洁判断的交互作用

标识R中多个列中缺少的唯一值

线性模型斜率在减少原始数据时提供NA

用R ggplot2求上、下三角形中两个变量的矩阵热图

为什么在BASE R中绘制线条时会看到线上的点?

基于数据集属性将科分配给物种

在r中整理图例和堆叠图的问题

如何将宽格式的患者信息数据高效地转换为患者计数的时间序列?

使用显式二元谓词子集化sfc对象时出错

向内存不足的数据帧添加唯一行

向数据添加标签