1

我试图用与平均值的标准差来赞美我的 ggdotchart,但是,我不能以美观的方式这样做。因此我需要更改图层的顺序,但我无法让它工作。

library(ggpubr)

  # Load data
  data("mtcars")
  dfm <- mtcars
  # Convert the cyl variable to a factor
  dfm$cyl <- as.factor(dfm$cyl)
  # Add the name colums
  dfm$name <- rownames(dfm)


  ggdotchart(dfm, x = "name", y = "mpg",
             color = "cyl",                                # Color by groups
             palette = c("#00AFBB", "#E7B800", "#FC4E07"), # Custom color palette
             sorting = "descending",                       # Sort value in descending order
             add = "segments",                             # Add segments from y = 0 to dots
             rotate = TRUE,                                # Rotate vertically
             group = "cyl",                                # Order by groups
             dot.size = 6,                                 # Large dot size
             label = round(dfm$mpg),                        # Add mpg values as dot labels
             font.label = list(color = "white", size = 9, 
                               vjust = 0.5),               # Adjust label parameters
             ggtheme = theme_pubr()                        # ggplot2 theme
  ) + geom_errorbar(aes(x = name, ymin = mpg - sd(mpg), ymax = mpg + sd(mpg)), position = "identity")

这会导致错误栏出现在点上,而我想把它放在点后面。我试图反转图层,但无法使其正常工作。在正常的 ggplot 中,它只是改变了顺序,但是,这个包很难做到这一点。

4

1 回答 1

2

虽然我喜欢链接中的答案,但我认为它带来了一些不必要的复杂性。我们可以以任何顺序保存绘图然后更改它们,而不是连接不同geoms的绘图。

g$layers[c(4,1,2,3)] -> g$layers

你的情节在哪里g,前三层来自ggdotchart


为了完成:

如果您想使用评论中建议的解决方案,它将是:

 g$layers <- c(geom_errorbar(aes(x = name, ymin = mpg - sd(mpg), ymax = mpg + sd(mpg)), 
                             position = "identity"), 
               g$layers)

在这里,gggdotchart您的代码的一部分,没有geom_errorbar.

于 2019-05-14T20:07:45.073 回答