【发布时间】:2021-03-15 23:23:11
【问题描述】:
我想绘制按丑陋名称级别排序的以下数据集:
time <- 1:3
qty <- 1:10
ugly_name <- c("ii" , "aaa" , "oNe", "iv" )
nice_name <- c("Two", "Three", "One", "Four")
dt <- data.table(time, qty, ugly_name,nice_name)
dt[, ugly_name := factor(ugly_name, levels = c("oNe", "ii" , "aaa" , "iv" ))]
ggplot(dt, aes(x = time, y = qty, fill = ugly_name)) + geom_col()
但是我想将图例中的ugly_name 更改为nice_name。
我得到它的繁琐方式是:
dt2 <- dt[, .(ugly_name, nice_name)] %>% unique()
dt2 <- dt2[order(ugly_name)]
dt[, nice_name:= factor(nice_name, levels = dt2$nice_name)]
ggplot(dt, aes(x = time, y = qty, fill = nice_name)) +
geom_col()
有没有更直接的方法来完成它,最好是在 ggplot 中?
【问题讨论】:
标签: r ggplot2 data.table