我发现添加 coord_flip()
时对于使用 ggplot2 的某些图,图例中的值顺序不再与图中值的顺序一致。
例如:
dTbl = data.frame(x=c(1,2,3,4,5,6,7,8),
y=c('a','a','b','b','a','a','b','b'),
z=c('q','q','q','q','r','r','r','r'))
print(ggplot(dTbl, aes(x=factor(y),y=x, fill=z)) +
geom_bar(position=position_dodge(), stat='identity') +
coord_flip() +
theme(legend.position='top', legend.direction='vertical'))
我希望图例中的 'q' 和 'r' 被颠倒而不改变情节中 'q' 和 'r' 的顺序。
scale.x.reverse()
看起来很有希望,但它似乎在因子范围内不起作用(就像这个条形图的情况一样)。
最佳答案
您正在寻找 guides
:
ggplot(dTbl, aes(x=factor(y),y=x, fill=z)) +
geom_bar(position=position_dodge(), stat='identity') +
coord_flip() +
theme(legend.position='top', legend.direction='vertical') +
guides(fill = guide_legend(reverse = TRUE))
Brian 在聊天中提醒我,通过设置
breaks
,对于任意排序,有一种更通用的方法可以做到这一点。争论:ggplot(dTbl, aes(x=factor(y),y=x, fill=z)) +
geom_bar(position=position_dodge(), stat='identity') +
coord_flip() +
theme(legend.position='top', legend.direction='vertical') +
scale_fill_discrete(breaks = c("r","q"))
关于r - 翻转图例的顺序而不改变情节中的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22517002/