在R中的哑铃图水平条中对值进行排序

Sort values in dumbbell plot horizontal bar in R

我试图在两个方面以类似的顺序对垂直轴上的绘图值进行排序。例如,在可见条件下附加的情节中,条件的顺序是(“IPS”、“CTR”和“CEN”),我希望对方面进行相同的安排 - 记住。 关于如何以相同模式排列两者的任何想法。

data10 <- structure(list(Group = structure(c(1L, 1L, 1L, 2L, 2L, 2L), .Label = c("Visible", 
"Remembered"), class = "factor"), Condition = structure(c(1L, 
2L, 3L, 1L, 2L, 3L), .Label = c("CEN", "IPS", "CTR"), class = "factor"), 
    `Trial block` = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = c("Pretest", 
    "Posttest"), class = "factor"), N = c(12, 12, 12, 12, 12, 
    12), PL_102 = c(5.855241667, 5.985275, 4.771216667, 7.188145833, 
    7.7207375, 6.468), PL_104 = c(8.225225, 7.84795, 8.1799875, 
    6.4192625, 7.0971125, 5.937570833), MT_102 = c(1089.966667, 
    954.5625, 829.5083333, 993.475, 961.4375, 748.5416667), MT_104 = c(1229.9125, 
    1153.7625, 1244.570833, 843.625, 901.4375, 669.8041667), 
    ARV_102 = c(5.375858333, 6.293454167, 6.341808333, 8.060779167, 
    7.644770833, 8.711075), ARV_104 = c(6.793625, 6.905570833, 
    7.594933333, 7.8801125, 7.526154167, 8.449425), NJ_102 = c(358.9311375, 
    449.9810292, 238.589375, 281.1215333, 268.6619583, 173.4592417
    ), NJ_104 = c(264.9741292, 283.7545833, 320.4076625, 249.2320625, 
    258.952725, 145.4800333), IDE_102 = c(19.66653759, 13.13362506, 
    20.17670876, 20.2698144, 16.98748243, 23.74337103), IDE_104 = c(12.47567853, 
    13.04815886, 19.25615657, 16.74588523, 15.6534457, 21.23477082
    ), EE_102 = c(7.333368735, 7.09299324, 7.034015836, 6.646904232, 
    6.532291162, 5.877550525), EE_104 = c(6.803615461, 7.856943584, 
    6.988436234, 6.76286594, 6.597801229, 6.294069392), PL_DIFF = c(2.369983333, 
    1.862675, 3.408770833, -0.768883333, -0.623625, -0.530429167
    ), MT_DIFF = c(139.9458333, 199.2, 415.0625, -149.85, -60, 
    -78.7375), ARV_DIFF = c(1.417766667, 0.612116667, 1.253125, 
    -0.180666667, -0.118616667, -0.26165), NJ_DIFF = c(-93.95700833, 
    -166.2264458, 81.8182875, -31.88947083, -9.709233333, -27.97920833
    ), IDE_DIFF = c(-7.190859062, -0.085466206, -0.920552189, 
    -3.523929171, -1.334036734, -2.508600214), EE_DIFF = c(-0.529753274, 
    0.763950345, -0.045579602, 0.115961708, 0.065510067, 0.416518866
    )), row.names = c(NA, -6L), spec = structure(list(cols = list(
    Group = structure(list(), class = c("collector_double", "collector"
    )), Condition = structure(list(), class = c("collector_double", 
    "collector")), `Trial block` = structure(list(), class = c("collector_double", 
    "collector")), N = structure(list(), class = c("collector_double", 
    "collector")), PL_102 = structure(list(), class = c("collector_double", 
    "collector")), PL_104 = structure(list(), class = c("collector_double", 
    "collector")), MT_102 = structure(list(), class = c("collector_double", 
    "collector")), MT_104 = structure(list(), class = c("collector_double", 
    "collector")), ARV_102 = structure(list(), class = c("collector_double", 
    "collector")), ARV_104 = structure(list(), class = c("collector_double", 
    "collector")), NJ_102 = structure(list(), class = c("collector_double", 
    "collector")), NJ_104 = structure(list(), class = c("collector_double", 
    "collector")), IDE_102 = structure(list(), class = c("collector_double", 
    "collector")), IDE_104 = structure(list(), class = c("collector_double", 
    "collector")), EE_102 = structure(list(), class = c("collector_double", 
    "collector")), EE_104 = structure(list(), class = c("collector_double", 
    "collector")), PL_DIFF = structure(list(), class = c("collector_double", 
    "collector")), MT_DIFF = structure(list(), class = c("collector_double", 
    "collector")), ARV_DIFF = structure(list(), class = c("collector_double", 
    "collector")), NJ_DIFF = structure(list(), class = c("collector_double", 
    "collector")), IDE_DIFF = structure(list(), class = c("collector_double", 
    "collector")), EE_DIFF = structure(list(), class = c("collector_double", 
    "collector"))), default = structure(list(), class = c("collector_guess", 
"collector")), skip = 1), class = "col_spec"), class = c("spec_tbl_df", 
"tbl_df", "tbl", "data.frame"))
library(tidyverse)
library(ggplot2) 
library(rlang)
library(utils)
library(data.table)
library(dumbbell)

dumbbell::dumbbell(data10, id="Condition", key="Group", leg = "Trial block", column1 = "EE_102", column2="EE_104", delt=1, lab1="Pretest", lab2="Posttest", p_col1 = "black", p_col2 = "grey40", textsize = 3, segsize = 1.5, pointsize = 2.5, title = "Change in Endpoint error (cm)")  + 
  xlim(5.5,8.5) + facet_wrap( Group ~., scales="free", ncol=1) +
  theme(axis.text.x = element_text(size = 11,face="bold"),
        axis.text.y = element_text(size = 10, face = "bold")) + theme(legend.position="right") +  annotate('text', x = 2.8, y = "IPS", label="*", size =6)


实现您想要的结果的一个选择是按照您想要的顺序手动设置 y 刻度的 limits,如下所示:

library(tidyverse)
library(ggplot2)
library(dumbbell)

dumbbell::dumbbell(data10, id = "Condition", key = "Group", leg = "Trial block", 
                   column1 = "EE_102", column2 = "EE_104", 
                   delt = 1, lab1 = "Pretest", lab2 = "Posttest", 
                   p_col1 = "black", p_col2 = "grey40", 
                   textsize = 3, segsize = 1.5, pointsize = 2.5, 
                   title = "Change in Endpoint error (cm)") +
  scale_y_discrete(limits = c("CEN", "CTR", "IPS")) + 
  xlim(5.5, 8.5) +
  facet_wrap(Group ~ ., scales = "free", ncol = 1) +
  theme(
    axis.text.x = element_text(size = 11, face = "bold"),
    axis.text.y = element_text(size = 10, face = "bold")
  ) + theme(legend.position = "right") + annotate("text", x = 2.8, y = "IPS", label = "*", size = 6)