如何在ggplot中按数据原始行序而非字母序设置x/y轴顺序
解决ggplot按数据原始顺序绘图的问题
ggplot 默认会将字符型的坐标轴变量按字母顺序排序,要让图表遵循你数据里的原始顺序(vard → vara → varc → varb),只需要把variables列转换成因子,并指定因子的水平顺序为数据中变量出现的先后顺序即可。
方法一:提前转换因子列
先修改数据框,把variables转为指定顺序的因子:
df$variables <- factor(df$variables, levels = unique(df$variables)) # 再绘图 df %>% ggplot(aes(x = variables, y = values)) + coord_flip()
方法二:在ggplot映射中直接处理
也可以不用修改原始数据框,直接在aes里指定因子水平:
df %>% ggplot(aes(x = factor(variables, levels = unique(variables)), y = values)) + coord_flip()
如果你希望坐标轴显示的是names列的文本(D、A、C、B)而非变量名,也可以调整为映射x = factor(names, levels = unique(names)),效果完全一致。
内容的提问来源于stack exchange,提问作者rez
相关产品推荐
相关产品推荐

