您好我繪製使用R中ggplot一個小情節的順序,這裏是小區如何更改ggplot小標籤(自定義小包裝標籤)
我的問題是,該刻面(標籤)按字母順序排序(例如:E1,E10,E11,E13,E2,E3,I1,I10,I2),但我需要它們是像E1,I1,E2,I2,E3,E10, I10,E11,E13。
我該怎麼做?
您好我繪製使用R中ggplot一個小情節的順序,這裏是小區如何更改ggplot小標籤(自定義小包裝標籤)
我的問題是,該刻面(標籤)按字母順序排序(例如:E1,E10,E11,E13,E2,E3,I1,I10,I2),但我需要它們是像E1,I1,E2,I2,E3,E10, I10,E11,E13。
我該怎麼做?
如果您提供的分組變量是而不是的因子,則不要依賴由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)
主要生產:
非常感謝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」的水平,然後根據這些進行重新排序。我相信你可以更有效地做到這一點,但它能做到這一點。
它可以適應解決原始問題。
重新排列潛在因素的順序。你可以使用''repvel()'或'reorder()'或者自定義命令並使用'factor()'。 – Chase 2011-03-30 18:53:49