2017-05-17 9 views
4

私はいくつかのスタディからエフェクトサイズのフォレストプロットを作成しようとしています。それらのタイプ(XまたはY)の面があります。このデータセットには、タイプXの研究の要約統計量を表す行と、study=="Summary"で表されるタイプYの研究が含まれています。ファセットggplotの軸テキストの条件付き書式設定

study <- as.factor(c("A","B","C","A","B","Summary","Summary")) 
mean <- c(1.29,0.76,2.43,1.68,1.22,1.7,0.76) 
lowerCI <- c(0.84,0.50,1.58,1.1,0.8,1.11,0.50) 
upperCI <- c(1.95,1.16,3.67,2.54,1.85,2.56,1.16) 
type <- as.factor(c("X","X","X","Y","Y","X","Y")) 

df <- data.frame(study, mean, lowerCI, upperCI, type) 
df$study <- as.factor(df$study) 

サマリーエフェクトサイズの軸目盛ラベルを太字にしたいとします。何らかの理由で、私がサブセットしたときにifelseステートメントを使用しても機能しません。このサンプル・コードでは、タイプXのサマリー・ラベルのみが太字になっていますが、両方とも太字にする必要があります。実際の複雑なコードでは、サマリー・ラベルは太字ではありません。

library(ggplot2) 
plot <- ggplot(data=df, aes(y=study, x=mean, xmin=lowerCI, xmax=upperCI, shape = type)) + 
    geom_point(color = 'black', size=2)+ 
    geom_errorbarh(height=.1)+ 
    geom_point(data=subset(df,study=='Summary'), color='black', size=5)+ 
    facet_grid(type~., scales= 'free', space='free')+ 
    theme(axis.text.y= element_text(face=ifelse(levels(df$study)=="Summary","bold","plain"))) 
print(plot) 

私がちょうどそれを落としたりscales='free_x'に変更した場合、サマリが適切に二回太字されているため、犯人は、scales='free'コードであることが表示されます。しかし、あるサブセットにある研究では冗長な行を削除したいので(この例ではC言語)、このコードを含める必要があります。

回避策はありますか?

答えて

3

あなたが対応breaks値(フォーマッティングコードを含む)所望labels値を割り当てることによって、scale_y_discreteを使用してすべての面を横切って所定の目盛りラベルの各インスタンスをフォーマットすることができる:

ggplot(data=df, aes(y=study, x=mean, xmin=lowerCI, xmax=upperCI, shape = type)) + 
    geom_point(color = 'black', size=2)+ 
    geom_errorbarh(height=.1)+ 
    geom_point(data=subset(df,study=='Summary'), color='black', size=5)+ 
    facet_grid(type~., scales= 'free', space='free') + 
    scale_y_discrete(breaks=levels(df$study), 
        labels=c(levels(df$study)[1:3], expression(bold("Summary")))) 

enter image description here

関連する問題