示例数据框:
df <- data.frame(x=rep(1:10,4),y=rnorm(40),Case=rep(c("B","L","BC","R"),each=10))
我可以用自己的方面绘制每个时间序列:
ggplot(df,aes(x=x,y=y,color=Case)) + geom_line()+facet_wrap(~Case,nr=2,nc=2)
现在,假设我想将facet顺序更改为(从左上角开始,沿着行向右下方)“L”,“B”,“R”,“BC”。关于SO的通常建议是this。但是,如果我重新排序因子Case
的级别,曲线的颜色也会改变。是否可以重新排序刻面,而不改变曲线颜色的顺序?我知道这听起来像一个奇怪的问题。问题是我的报告是一项正在进行中的工作,而且是在报告的旧版本中,我已经向同事展示了这个报告。管理方面,有多个或多或少像这样的图(没有facet_wrap
):
ggplot(df,aes(x=x,y=y,color=Case)) + geom_line()
换句话说,现在人们习惯将“B”与红色联系起来。如果我重新排序,“L”将为红色,“B”为绿色,依此类推。我已经可以听到抱怨了......任何出路都没有?
答案 0 :(得分:4)
只需将数据复制到您想要的订单的新列中。使用新列进行分面,使用旧列作为颜色。
df$facet = factor(df$Case, levels = c("L", "B", "R", "BC"))
ggplot(df, aes(x = x, y = y, color = Case)) +
geom_line() +
facet_wrap(~facet, nr = 2)