排列没有按预期对使用 ggplot2 绘图的数据进行排序

use*_*356 1 r ggplot2

我想绘制一些数据。不知何故,数据的顺序不正确,因此 x 轴上的顺序是错误的(1100、1200、200 而不是 200、1100、1200)。

MWE:

require(data.table)
require(tidyverse)
dt <- data.table("1100" = c(20,30,40), "1200" = c(44,23,2), "200" = c(32,42,1))

dt %>% 
    rownames_to_column("ID") %>% 
    mutate(ID = as.numeric(ID)) %>%
    gather(vars, value, -ID) %>%
    arrange(vars) %>% # does not work as expected
    ggplot(aes(vars, value, color = ID, fill = ID)) + 
    geom_jitter() 
Run Code Online (Sandbox Code Playgroud)

我需要改变什么?

Ron*_*hah 6

转换varsfactorlevels根据其整数值进行分配。

library(tidyverse)

dt %>% 
 rownames_to_column("ID") %>% 
 mutate(ID = as.numeric(ID)) %>%
 gather(vars, value, -ID) %>%
 mutate(vars = factor(vars, levels = sort(unique(as.integer(vars))))) %>%
 ggplot(aes(vars, value, color = ID, fill = ID)) + 
 geom_jitter() 
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

PS -gather在较新版本中已停用tidyr,请pivot_longer改用。