如何调整ggplot绘图中Y轴变量的绘制顺序?
调整ggplot柱状图中分组柱子的绘制顺序
嘿,我猜你是想调整每个Name分组下,Values和Dummies这两类柱子的绘制顺序对吧?默认情况下ggplot会按照变量的字符顺序来排列,咱们只需要修改Variable列的因子水平就能轻松搞定。
给你一步步来:
第一步:指定
Variable的因子顺序
把数据框里的Variable列转换成因子,明确你想要的绘制顺序。比如你想让每个Name下先展示Dummies再展示Values,就运行这段代码:molten$Variable <- factor(molten$Variable, levels = c("Dummies", "Values"))要是你想要反过来(
Values在前),就把levels改成c("Values", "Dummies")就行。第二步:重新绘制柱状图
用修改后的因子列绘图,注意你原来代码里x轴写的Names和数据框列名Name不一致,要修正哦!如果是并列柱状图,记得加上position = "dodge",堆叠的话可以不用:ggplot(data = molten, aes(y = value, x = Name)) + geom_bar(aes(fill = Variable), stat = "identity", position = "dodge")
要是不想修改原始数据框,也可以直接在ggplot里临时指定因子顺序,这样更灵活:
ggplot(data = molten, aes(y = value, x = Name)) + geom_bar(aes(fill = factor(Variable, levels = c("Dummies", "Values"))), stat = "identity") + labs(fill = "Variable") # 手动设置图例标题,避免显示成factor(...)
这样调整后,柱子的顺序就完全符合你的预期啦!
内容的提问来源于stack exchange,提问作者Aneesh
相关产品推荐
相关产品推荐

