ggplot2: как получить функциональность слияния параметров facet grid()'s labeller=label both и facet wrap()'s ncol?
Я создаю boxplot с помощью ggplot2. Я могу создать boxplot успешно, но у меня возникают проблемы при слиянии двух функций с фасеткой в ggplot2:
1. When faceting, strip text should contain column name & column value (as given by labeller=label_both argument in facet_grid())
2. The facets should be split into as many rows & columns as I want (as given by nrow and ncol argument in facet_wrap())
вот подмножество моего фрейма данных (фактический фрейм данных довольно большой):
>tmpdf
value treat FoldChange Gene Pvalue.Adj
523.8589 Normal -1.899 A 0.02828
489.7638 Normal -1.899 A 0.02828
642.0126 Cancer -1.899 A 0.02828
928.8136 Cancer -1.899 A 0.02828
624.7892 Normal -1.899 A 0.02828
53.8685 Normal -7.135 B 0.00012
184.6473 Normal -7.135 B 0.00012
76.2712 Cancer -7.135 B 0.00012
48.0607 Cancer -7.135 B 0.00012
177.9528 Normal -7.135 B 0.00012
4581.2847 Normal -1.886 C 0.04924
7711.3411 Normal -1.886 C 0.04924
6007.9852 Cancer -1.886 C 0.04924
5940.9232 Cancer -1.886 C 0.04924
4433.0949 Normal -1.886 C 0.04924
171.9172 Normal -4.594 D 0.00093
316.3900 Cancer -4.594 D 0.00093
231.3177 Cancer -4.594 D 0.00093
295.1096 Normal -4.594 D 0.00093
322.8346 Normal -4.594 D 0.00093
Это мой код:
#Here I am using facet_grid and labeller=label_both, this gives me column names & column values in the facet strip text but I am unable to divide the plot into columns & rows.
ggplot(tmpdf,aes(x=treat,y=log(value+1),fill=treat)) + geom_boxplot(show_guide=F) +
facet_grid(~Gene+FoldChange+Pvalue.Adj,labeller=label_both) + ylab("log2(Expression)n") +
ggtitle("Boxplot with facet_grid & labellernnlabeller=label_both shows column names with column valuesn") +
theme(axis.text.x=element_text(size=14,color="black"),
axis.text.y=element_text(size=14,color="black"),
strip.text=element_text(size=14,color="black"),
axis.title.x=element_blank(),
axis.title.y=element_text(size=14,color="black"),
plot.title=element_text(size=16,color="black"))
#This creates the following plot:
#And here is the second code:
#This divides the plot into as many columns as I want but doesn't show the column name in the facet strip text.
#Strip text contains comma-separated values that are less informative.
ggplot(tmpdf,aes(x=treat,y=log(value+1),fill=treat)) + geom_boxplot(show_guide=F) +
facet_wrap(~Gene+FoldChange+Pvalue.Adj,ncol=2) + ylab("log2(Expression)n") +
ggtitle("Boxplot with facet_wrap & ncolnnDoesn't show column namen") +
theme(axis.text.x=element_text(size=14,color="black"),
axis.text.y=element_text(size=14,color="black"),
strip.text=element_text(size=14,color="black"),
axis.title.x=element_blank(),
axis.title.y=element_text(size=14,color="black"),
plot.title=element_text(size=16,color="black"))
#This creates the following plot:
как я могу разделить свой участок на несколько столбцов/строк, а также имеют описательный полосы текст, содержащий имя и значение столбца в фасетах?
1 ответов
Это немного хак, но он, похоже, предоставляет то, что вы просите.
tmpdf$label <- with(tmpdf,paste("Gene:",Gene,"\n","FoldChange:",FoldChange,"\n","Pvalue.Adj:",Pvalue.Adj))
ggplot(tmpdf,aes(x=treat,y=log(value+1),fill=treat)) + geom_boxplot(show_guide=F) +
facet_wrap(~label,ncol=2) + ylab("log2(Expression)\n") +
ggtitle("Boxplot with facet_wrap & ncol") +
theme(axis.text.x=element_text(size=14,color="black"),
axis.text.y=element_text(size=14,color="black"),
strip.text=element_text(size=14,color="black"),
axis.title.x=element_blank(),
axis.title.y=element_text(size=14,color="black"),
plot.title=element_text(size=16,color="black"))