【发布时间】:2019-10-14 00:42:09
【问题描述】:
我正在尝试创建一个包含多个变量的折线图。
首先,我的数据如下所示: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")
效果很好,并像这样绘制我的数据:
但是,ggplot 将变量排序为 C100、S1、S2、S3、S4 和 S5。为什么把C100放在第一位?我怎样才能让它以原始顺序显示变量?
我查看了很多类似问题的答案,但似乎没有一个适合我正在做的事情。例如,许多人建议手动重新排序变量,但是当我在 data_long 中查找变量时,它们的顺序是正确的。此外,它们有很多,因为 data_long 有数百行,所以我不确定如何手动执行类似的操作。
如果这是一个之前已经回答过的非常明显的问题,我很抱歉,但无论我看了多少答案,我似乎都无法弄清楚。非常感谢您的帮助。
【问题讨论】:
-
欢迎来到 Stack Overflow!您能否通过共享您的数据样本来重现您的问题,以便其他人可以提供帮助(请不要使用
str()、head()或屏幕截图)?您可以使用reprex和datapasta包来帮助您。另见Help me Help you & How to make a great R reproducible example?