改变变量的顺序

时间:2019-10-14 00:42:09

标签: r variables ggplot2 tidyr

我正在尝试创建具有多个变量的折线图。

首先,我的数据如下所示:https://figshare.com/s/d42f7f6d348aecac3f00

我称这个为“ coverage_data”。

首先,我创建我的data.frame:

data_long <- gather(coverage_data, key = "variable", value = "value", -one_of("SLOV_position", "Segment"))

data_long中变量的顺序为S1,S2,S3,S4,S5和C100。

然后我将其绘制:

ggplot(data=data_long, aes(x=SLOV_position, y=value, colour=variable)) +
xlab("UMAV genome position") + 
ylab("Read depth (log scale)") +
scale_y_continuous(trans='log10', labels = comma) +
ggtitle("Segment") +
theme_classic(base_size = 12) +
geom_line(size=1) +
scale_x_continuous(breaks = scales::pretty_breaks(n = 3), labels = comma) +
theme(plot.title = element_text(size = 12, hjust = 0.5), axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5, size = 8), axis.title.x = element_text(margin = margin(t = 10))) +
facet_grid(~ Segment, scales="free")

哪一个效果很好,并按照以下方式绘制我的数据:

data_long_plot

但是,ggplot将变量排序为C100,S1,S2,S3,S4和S5。为什么将C100放在首位?怎样才能按原始顺序显示变量?

我看过很多类似问题的答案,但似乎没有一个对我正在做的事情有用。例如,许多建议使用手动方式对变量重新排序,但是当我在data_long中查找变量时,它们的顺序正确。另外,它们太多了,因为data_long有数百行,所以我不确定如何手动执行这样的操作。

很抱歉,如果这是一个以前已经回答过的非常明显的问题,但是无论我看多少个答案,我似乎都无法弄清楚。非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

将当前变量$ sudo ./awscli-bundle/install -i /user/local/aws -b /bin/aws variable更改为charactor为:

factor

然后,运行您的data_long$variable <- factor(data_long$variable, levels = c("S1", "S2", "S3", "S4", "S5", "C100"))