具有重复标签的ggplot轴自定义订单

时间:2017-05-12 18:09:21

标签: r ggplot2

set.seed(357)
x <- data.frame(name = sample(letters, 10), val = runif(10), stringsAsFactors = F)
x[c(2,6),"name"] <- c("k","k")
ggplot(x, aes(x = name, y = val)) + theme_bw() + geom_bar(stat = "identity")

如何以与x $ name相同的顺序绘制轴? (是的,k是重复的,我希望它像这个轴一样出现在图中:c k g f o k s v t q)

过去我常常这样做:

x$name <- factor(x$name, levels = x$name[order(x$val)], ordered = T)
由于以下原因,它不再起作用了: http://r.789695.n4.nabble.com/factors-with-non-unique-quot-duplicated-quot-levels-have-been-deprecated-since-2009-are-more-depreca-td4721481.html

这不重复:ggplot: order of factors with duplicate levels 他的数据结构完全不同。

另外,我尝试在x_scale_discrete中设置限制。不起作用。

2 个答案:

答案 0 :(得分:3)

试试这个......

x$name2 <- 1:nrow(x)
ggplot(x, aes(x = factor(name2), y = val)) + theme_bw() + geom_bar(stat = "identity") + 
             scale_x_discrete(labels=x$name)

答案 1 :(得分:0)

实际上,只需添加以下设置xlab(x$name)

即可
ggplot(x, aes(x = name, y = val)) + theme_bw() + geom_bar(stat = "identity") + xlab(x$name)