1

我想绘制一些数据。不知何故,数据排序不正确,因此 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() 

我需要改变什么?

4

1 回答 1

6

根据它们的整数值转换varsfactor赋值。levels

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() 

在此处输入图像描述

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

于 2020-02-01T12:45:47.100 回答