R 如何更改ggplot中镶嵌面标签的顺序(自定义镶嵌面包裹标签)
我用ggplot绘制了一个刻面图,下面是图 我的问题是,facetsLabel是按字母顺序排序的,例如:E1、E10、E11、E13、E2、E3、I1、I10、I2,但我需要它们是像E1、I1、E2、I2、E3、E10、I10、E11、E13这样的自定义顺序R 如何更改ggplot中镶嵌面标签的顺序(自定义镶嵌面包裹标签),r,ggplot2,R,Ggplot2,我用ggplot绘制了一个刻面图,下面是图 我的问题是,facetsLabel是按字母顺序排序的,例如:E1、E10、E11、E13、E2、E3、I1、I10、I2,但我需要它们是像E1、I1、E2、I2、E3、E10、I10、E11、E13这样的自定义顺序 如何做到这一点?如果您提供的分组变量不是一个因子,则不要依赖于因子或ggplot内部施加的默认级别顺序。自己明确设置级别 dat <- data.frame(x = runif(100), y = runif(100),
如何做到这一点?如果您提供的分组变量不是一个因子,则不要依赖于因子或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) # 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))
现在,我们可以使用此命令按所需顺序绘制面板:
产生:
只是在处理一个类似的问题。默认情况下,我有如下级别:
[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,然后根据这些级别重新排序。我相信你可以更有效地完成这项工作,但它确实起到了作用
它可以用来解决最初的问题。重新安排潜在因素的顺序。您可以使用relevel、reorder或定制订单和使用系数。这是否回答了您的问题?与上面相同,但如果数据本身已处于自定义顺序,则您希望组变量处于该顺序,而不希望手动按该顺序创建向量:dat
[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])