You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

R语言哑铃图分面中统一垂直轴条件排序的实现方法

解决哑铃图分面垂直轴排序一致的问题

我来帮你搞定这个问题!要让两个分面的垂直轴(Condition)保持相同的排序,核心是先固定Condition列的因子水平顺序,这样ggplot就会严格按照你指定的顺序渲染y轴,不会因为分面而改变。

具体解决步骤:

  • 先把Condition的因子水平重新设置为你想要的("IPS", "CTR", "CEN"),覆盖数据里原来的默认顺序
  • 绘图时保持其他代码不变,两个分面就会统一使用这个排序了

修改后的完整代码:

# 先重新设置Condition的因子顺序
data10 <- data10 %>%
  mutate(Condition = factor(Condition, levels = c("IPS", "CTR", "CEN")))

# 运行绘图代码
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)

原理说明:

在R中,离散变量的显示顺序由其因子水平的顺序决定。原来的数据里Condition的因子水平是c("CEN", "IPS", "CTR"),所以绘图时会按这个默认顺序排列。我们手动指定新的水平顺序后,不管是哪个分面,y轴都会严格遵循IPS → CTR → CEN的顺序展示啦。

内容的提问来源于stack exchange,提问作者Reuben Newton Addison

火山引擎 最新活动