我想绘制一些数据。不知何故,数据的顺序不正确,因此 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)
我需要改变什么?
转换vars为factor并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()
Run Code Online (Sandbox Code Playgroud)
PS -gather在较新版本中已停用tidyr,请pivot_longer改用。