我正在嘗試避免在配色方案中重疊線條。原諒丑陋的情節,但在下面,我如何按照 y1、y2、y1Smooth 和 y2Smooth 的順序繪制線條?
foo <- tibble(x=1:100,y1=rnorm(100,1),y2=rnorm(100,2)) %>%
mutate(y1Spline = smooth.spline(y1,spar=0.5)$y,
y2Spline = smooth.spline(y2,spar=0.5)$y) %>%
pivot_longer(cols=-x)
cols = c("darkgreen","darkblue")
ggplot(foo,aes(x=x,y=value,col=name, alpha=name))
geom_line()
scale_color_manual(values=rep(cols,each=2))
scale_alpha_manual(values=c(0.5,1,0.5,1))
uj5u.com熱心網友回復:
實際上,當該列被強制轉換為因子時,字符變數的圖例項的順序將等于級別的順序。因此,默認排序如下所示:
> levels(factor(foo$name))
[1] "y1" "y1Spline" "y2" "y2Spline"
看起來熟悉?答案是在繪圖之前自己設定級別:
library(ggplot2)
set.seed(8675309)
foo <- tibble(x=1:100,y1=rnorm(100,1),y2=rnorm(100,2)) %>%
mutate(y1Spline = smooth.spline(y1,spar=0.5)$y,
y2Spline = smooth.spline(y2,spar=0.5)$y) %>%
pivot_longer(cols=-x)
# force factor level order
foo$name <- factor(foo$name, levels=c("y1", "y2", "y1Spline", "y2Spline"))
cols = c("darkgreen","darkblue")
ggplot(foo,aes(x=x,y=value,col=name, alpha=name))
geom_line()
scale_color_manual(values=rep(cols,each=2))
scale_alpha_manual(values=c(0.5,1,0.5,1))

需要特別注意的是,線條是按此順序繪制的——這意味著“y1”的線條將位于“y1Spline”之上。如果您希望按該順序繪制線條,但圖例相反,則需要guides(color=guide_legend(reverse=TRUE))在繪圖代碼的末尾添加類似的內容。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/376439.html
標籤:ggplot2
