在 R ggplot2 中按图例颜色为 facet 中的文本着色
Colour text in facet by legend color in R ggplot2
我有一个示例数据框:
dput(数据)
structure(list(DAF = c(0.00704225, 0.00352113, 0.00352113, 0.028169,
0.00352113, 0.00704225, 0.0105634, 0.00352113, 0.0105634, 0.00352113,
0.00352113, 0.00352113, 0.0176056, 0.0140845, 0.00352113, 0.0140845,
0.00352113, 0.0105634, 0.00352113, 0.00352113, 0.0140845, 0.00352113,
0.084507, 0.00352113, 0.0669014, 0.00704225, 0.00352113, 0.00352113,
0.00704225, 0.00352113, 0.00704225, 0.00352113, 0.00352113, 0.028169,
0.00352113, 0.00704225, 0.0105634, 0.00352113, 0.0105634, 0.00352113,
0.00352113, 0.00352113, 0.0176056, 0.0140845, 0.00352113, 0.0140845,
0.00352113, 0.0105634, 0.00352113, 0.00352113, 0.0140845, 0.00352113,
0.084507, 0.00352113, 0.0669014, 0.00704225, 0.00352113, 0.00352113,
0.00704225, 0.00352113), TYPE = structure(c(2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("All SVs", "bDEL"), class = "factor"),
Function = structure(c(2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L,
2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L,
2L, 2L, 2L, 2L, 2L, 1L), .Label = c("Genic", "Intergenic"
), class = "factor")), .Names = c("DAF", "TYPE", "Function"
), class = "data.frame", row.names = c(NA, -60L))
我已经使用
绘制了
p1<-ggplot(sv,aes(x=DAF,y=..density..,fill=Function))+geom_histogram(position="dodge",binwidth=0.02)+facet_wrap( ~ TYPE, scales = "free",ncol=2)
来自数据框的注释文本:
> dput(dat)
structure(list(x = c(0.05, 0.05, 0.05, 0.05, 0.05, 0.05), y = c(20L,
17L, 14L, 35L, 30L, 25L), labs = structure(c(3L, 4L, 6L, 1L,
2L, 5L), .Label = c("mean=0.0173", "mean=0.0190", "mean=0.0415",
"mean=0.0440", "p=0.0393", "p=1.47e-08"), class = "factor"),
TYPE = structure(c(1L, 1L, 1L, 2L, 2L, 2L), .Label = c("All SVs",
"bDEL"), class = "factor")), .Names = c("x", "y", "labs",
"TYPE"), class = "data.frame", row.names = c(NA, -6L))
p2<-p1+geom_text(aes(x, y, label=labs),size=1,data=dat,inherit.aes = F)
给出了以下情节:
但是,我需要用图例的相应颜色为每个方面内的文本 "mean=..." 着色。即在 facet 所有 SV 中,'mean=0.0415' 应该是 "Genic" 颜色,“mean=0.0440' 应该是 'Intergenic' 颜色。
您需要向 "dat" 添加一列来表示每个 row/label 应该属于哪个组。我使用 NA
作为 p 值。
dat$Function = c("Genic", "Intergenic", NA, "Genic", "Intergenic", NA)
然后你可以将这个变量映射到geom_text
中的color
。您可以使用 show.legend = FALSE
.
避免将 NA
添加到图例中
p1 + geom_text(aes(x, y, label = labs, color = Function),
size = 1, data = dat, inherit.aes = FALSE, show.legend = FALSE)
NA
颜色默认为 grey50
,如果需要,您可以在 scale_color_discrete
中更改为其他颜色。
p1 + geom_text(aes(x, y, label = labs, color = Function),
size = 1, data = dat, inherit.aes = FALSE, show.legend = FALSE) +
scale_color_discrete(na.value = "black")
我有一个示例数据框:
dput(数据)
structure(list(DAF = c(0.00704225, 0.00352113, 0.00352113, 0.028169,
0.00352113, 0.00704225, 0.0105634, 0.00352113, 0.0105634, 0.00352113,
0.00352113, 0.00352113, 0.0176056, 0.0140845, 0.00352113, 0.0140845,
0.00352113, 0.0105634, 0.00352113, 0.00352113, 0.0140845, 0.00352113,
0.084507, 0.00352113, 0.0669014, 0.00704225, 0.00352113, 0.00352113,
0.00704225, 0.00352113, 0.00704225, 0.00352113, 0.00352113, 0.028169,
0.00352113, 0.00704225, 0.0105634, 0.00352113, 0.0105634, 0.00352113,
0.00352113, 0.00352113, 0.0176056, 0.0140845, 0.00352113, 0.0140845,
0.00352113, 0.0105634, 0.00352113, 0.00352113, 0.0140845, 0.00352113,
0.084507, 0.00352113, 0.0669014, 0.00704225, 0.00352113, 0.00352113,
0.00704225, 0.00352113), TYPE = structure(c(2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("All SVs", "bDEL"), class = "factor"),
Function = structure(c(2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L,
2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L,
2L, 2L, 2L, 2L, 2L, 1L), .Label = c("Genic", "Intergenic"
), class = "factor")), .Names = c("DAF", "TYPE", "Function"
), class = "data.frame", row.names = c(NA, -60L))
我已经使用
绘制了p1<-ggplot(sv,aes(x=DAF,y=..density..,fill=Function))+geom_histogram(position="dodge",binwidth=0.02)+facet_wrap( ~ TYPE, scales = "free",ncol=2)
来自数据框的注释文本:
> dput(dat)
structure(list(x = c(0.05, 0.05, 0.05, 0.05, 0.05, 0.05), y = c(20L,
17L, 14L, 35L, 30L, 25L), labs = structure(c(3L, 4L, 6L, 1L,
2L, 5L), .Label = c("mean=0.0173", "mean=0.0190", "mean=0.0415",
"mean=0.0440", "p=0.0393", "p=1.47e-08"), class = "factor"),
TYPE = structure(c(1L, 1L, 1L, 2L, 2L, 2L), .Label = c("All SVs",
"bDEL"), class = "factor")), .Names = c("x", "y", "labs",
"TYPE"), class = "data.frame", row.names = c(NA, -6L))
p2<-p1+geom_text(aes(x, y, label=labs),size=1,data=dat,inherit.aes = F)
给出了以下情节:
但是,我需要用图例的相应颜色为每个方面内的文本 "mean=..." 着色。即在 facet 所有 SV 中,'mean=0.0415' 应该是 "Genic" 颜色,“mean=0.0440' 应该是 'Intergenic' 颜色。
您需要向 "dat" 添加一列来表示每个 row/label 应该属于哪个组。我使用 NA
作为 p 值。
dat$Function = c("Genic", "Intergenic", NA, "Genic", "Intergenic", NA)
然后你可以将这个变量映射到geom_text
中的color
。您可以使用 show.legend = FALSE
.
NA
添加到图例中
p1 + geom_text(aes(x, y, label = labs, color = Function),
size = 1, data = dat, inherit.aes = FALSE, show.legend = FALSE)
NA
颜色默认为 grey50
,如果需要,您可以在 scale_color_discrete
中更改为其他颜色。
p1 + geom_text(aes(x, y, label = labs, color = Function),
size = 1, data = dat, inherit.aes = FALSE, show.legend = FALSE) +
scale_color_discrete(na.value = "black")