繁体   English   中英

ggplot2 闪避条和图例未排序

[英]ggplot2 dodged bars and legend not ordered

我有一个非常简单的问题。 我正在 R 中的 ggplot2 中制作一个简单的躲避条形图,并且我的度量在情节和图例中的顺序不同。 从示例图中可以看出,鲑鱼中的测量 A 在图表的底部,但在图例的顶部。 我希望它们在两个地方的订购方式相同。

在此处输入图片说明 有什么建议吗? 我试过调整填充度量的顺序,但没有任何区别。 这是R代码:

ggplot(out2, aes(x = Variable, y=est,fill=Measure)) +
  geom_bar(position = "dodge", stat="identity",color="black")+
  geom_errorbar(aes(x=Variable,ymin=lo,ymax=hi),width=.2,position=position_dodge(.9))+
  theme_classic()+coord_flip()+ylab("Standardized Estimate")+xlab("Measure")

数据:

Variable    Measure est lo  hi 
Var1    A   -0.22046025 -0.242941124    -0.19797938
Var1    B   -0.4416939  -0.464179242    -0.41920856
Var1    C   -0.05870968 -0.079757151    -0.0376622
Var1    D   -0.09956618 -0.121966337    -0.07716603
Var1    E   -0.21761678 -0.237557365    -0.19767619
Var2    A   0.15310304  0.130995958 0.17521013
Var2    B   0.08317558  0.059667487 0.10668366
Var2    C   0.19167363  0.171662536 0.21168473
Var2    D   0.19607088  0.174750576 0.21739118
Var2    E   0.12307817  0.102282982 0.14387336
Var3    A   0.01874422  -0.007943041    0.04543148
Var3    B   0.09679525  0.068783593 0.12480691
Var3    C   0.17800168  0.153945969 0.20205739
Var3    D   -0.06815006 -0.092771073    -0.04352905
Var3    E   0.10935194  0.092778676 0.1259252
Var4    A   0.02119417  -0.005383474    0.04777182
Var4    B   0.20175 0.174170789 0.22932921
Var4    C   0.28234648  0.258946192 0.30574677
Var4    D   0.27383735  0.24550973  0.30216497
Var4    E   0.12060643  0.095333034 0.14587983
Var5    A   -0.40312318 -0.428041245    -0.37820512
Var5    B   -0.62223812 -0.646148035    -0.5983282
Var5    C   -0.24178985 -0.265545315    -0.21803439
Var5    D   -0.25663925 -0.281690564    -0.23158794
Var5    E   -0.2504907  -0.274898158    -0.22608324
Var6    A   0.08896879  0.059268463 0.11866912
Var6    B   0.12772646  0.099299213 0.15615371
Var6    C   0.10013601  0.075418108 0.12485392
Var6    D   0.02986901  0.006681256 0.05305677
Var6    E   0.12655356  0.107467398 0.14563971
Var7    A   0.36395987  0.340471818 0.38744791
Var7    B   0.59798475  0.575777017 0.62019248
Var7    C   0.30156148  0.279785839 0.32333712
Var7    D   0.3636511   0.338241065 0.38906113
Var7    E   0.29686526  0.273368812 0.3203617
Var8    A   0.05732388  0.032874273 0.08177348
Var8    B   0.16576558  0.140281883 0.19124928
Var8    C   0.05272789  0.030332088 0.07512368
Var8    D   0.10909782  0.077128721 0.14106691
Var8    E   0.12067134  0.096529477 0.14481321

我可以找到三种主要方法来做到这一点:

  1. 使用guide = guide_legend(reverse=TRUE)在 ggplot2 代码中更改它。 来源在这里
  2. 使用aes(..., order=-Measure) -Measure) 在 ggplot2 代码中更改它。 - in 用于反转变量,例如当您使用order(-x)按 x 反转对数据表进行排序时。 来源在这里
  3. 颠倒数据管理中的顺序,例如out2$Measure <- factor(out2$Measure, levels = rev(levels(out2$Measure)但这更复杂。 来源在这里

干得好。 我使用 position_dodge2(reverse = TRUE),而不是 position_dodge。 我猜这是这样做的最少侵入性的方式。

library(tidyverse)
text1 <- "Variable    Measure est lo  hi 
Var1    A   -0.22046025 -0.242941124    -0.19797938
Var1    B   -0.4416939  -0.464179242    -0.41920856
Var1    C   -0.05870968 -0.079757151    -0.0376622
Var1    D   -0.09956618 -0.121966337    -0.07716603
Var1    E   -0.21761678 -0.237557365    -0.19767619
Var2    A   0.15310304  0.130995958 0.17521013
Var2    B   0.08317558  0.059667487 0.10668366
Var2    C   0.19167363  0.171662536 0.21168473
Var2    D   0.19607088  0.174750576 0.21739118
Var2    E   0.12307817  0.102282982 0.14387336
Var3    A   0.01874422  -0.007943041    0.04543148
Var3    B   0.09679525  0.068783593 0.12480691
Var3    C   0.17800168  0.153945969 0.20205739
Var3    D   -0.06815006 -0.092771073    -0.04352905
Var3    E   0.10935194  0.092778676 0.1259252
Var4    A   0.02119417  -0.005383474    0.04777182
Var4    B   0.20175 0.174170789 0.22932921
Var4    C   0.28234648  0.258946192 0.30574677
Var4    D   0.27383735  0.24550973  0.30216497
Var4    E   0.12060643  0.095333034 0.14587983
Var5    A   -0.40312318 -0.428041245    -0.37820512
Var5    B   -0.62223812 -0.646148035    -0.5983282
Var5    C   -0.24178985 -0.265545315    -0.21803439
Var5    D   -0.25663925 -0.281690564    -0.23158794
Var5    E   -0.2504907  -0.274898158    -0.22608324
Var6    A   0.08896879  0.059268463 0.11866912
Var6    B   0.12772646  0.099299213 0.15615371
Var6    C   0.10013601  0.075418108 0.12485392
Var6    D   0.02986901  0.006681256 0.05305677
Var6    E   0.12655356  0.107467398 0.14563971
Var7    A   0.36395987  0.340471818 0.38744791
Var7    B   0.59798475  0.575777017 0.62019248
Var7    C   0.30156148  0.279785839 0.32333712
Var7    D   0.3636511   0.338241065 0.38906113
Var7    E   0.29686526  0.273368812 0.3203617
Var8    A   0.05732388  0.032874273 0.08177348
Var8    B   0.16576558  0.140281883 0.19124928
Var8    C   0.05272789  0.030332088 0.07512368
Var8    D   0.10909782  0.077128721 0.14106691
Var8    E   0.12067134  0.096529477 0.14481321
"
out2  <-  read.table(text = text1, header = T)
ggplot(out2, aes(x = Variable, y=est, fill=Measure)) +
  geom_bar(position = position_dodge2(reverse = TRUE), stat="identity",color="black")+
  geom_errorbar(aes(x=Variable,ymin=lo,ymax=hi), position = position_dodge2(width=1, padding = 1, rev = TRUE))+
  theme_classic()+coord_flip()+ylab("Standardized Estimate")+xlab("Measure")

这会给你:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM