如何更改ggplot小标签(自定义小包装标签)

如何更改ggplot小标签(自定义小包装标签)

问题描述:

您好我绘制使用R中ggplot一个小情节的顺序,这里是小区如何更改ggplot小标签(自定义小包装标签)

http://i.stack.imgur.com/5qXF1.png

我的问题是,该刻面(标签)按字母顺序排序(例如:E1,E10,E11,E13,E2,E3,I1,I10,I2),但我需要它们是像E1,I1,E2,I2,E3,E10, I10,E11,E13。

我该怎么做?

+5

重新排列潜在因素的顺序。你可以使用''repvel()'或'reorder()'或者自定义命令并使用'factor()'。 – Chase 2011-03-30 18:53:49

如果您提供的分组变量是而不是的因子,则不要依赖由factor()施加的级别的默认排序或在内部按ggplot。自己设置显示级别。

dat <- data.frame(x = runif(100), y = runif(100), 
        Group = gl(5, 20, labels = LETTERS[1:5])) 
head(dat) 
with(dat, levels(Group)) 

如果我想让它们按照这个任意顺序怎么办?

set.seed(1) 
with(dat, sample(levels(Group))) 

要做到这一点,按照你想要的方式设置水平。

set.seed(1) # reset the seed so I get the random order form above 
dat <- within(dat, Group <- factor(Group, levels = sample(levels(Group)))) 
with(dat, levels(Group)) 

现在,我们可以用它来有顺序绘制我们想面板:

require(ggplot2) 
p <- ggplot(dat, aes(x = x)) + geom_bar() 
p + facet_wrap(~ Group) 

主要生产:

facets wrapped

+1

非常感谢gavin :) – Jana 2011-03-30 22:10:28

仅仅是一个类似的工作问题。我有这样的默认水平:

[1] "A1" "A10" "A2" "A3" "A4" "A5" "A6" "A7" "A8" "A9" 
[11] "B1" "B2" "B3" "B4" "B5" "B6" "B7" "B8" "B9" 

请注意,第二级由于字母顺序不合适。

这是我在做什么固定的顺序:

reorder(factor(fct), 
     fct %>% 
      str_replace("([[:alpha:]]+)", "\\1|") %>% 
      str_split("\\|") %>% 
      sapply(function(d) sprintf("%s%02d", d[1], as.integer(d[2]))), 
     function(x) x[1]) 

它取代了像“A1”和“A01”的水平,然后根据这些进行重新排序。我相信你可以更有效地做到这一点,但它能做到这一点。

它可以适应解决原始问题。