【问题标题】:Changing order of variables [duplicate]改变变量的顺序[重复]
【发布时间】: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 有数百行,所以我不确定如何手动执行类似的操作。

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

【问题讨论】:

标签: r variables ggplot2 tidyr


【解决方案1】:

将当前变量 variable 从 charactor 更改为 factor 为:

data_long$variable <- factor(data_long$variable, levels = c("S1", "S2", "S3", "S4", "S5", "C100"))

然后,运行您的ggplot。

【讨论】:

  • 太好了,很高兴它有帮助
猜你喜欢
  • 2014-11-13
  • 2013-03-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-10
  • 2022-01-19
  • 2019-02-15
  • 2023-03-24
  • 1970-01-01
相关资源
最近更新 更多