7

前の質問に基づいて、プロットの反対側に2番目の軸ラベルを追加したいと思います。

データフレームは次のようになります。

test <- structure(list(characteristic = structure(c(1L, 2L, 3L, 1L, 2L
), .Label = c("Factor1", "Factor2", "Factor3"), class = "factor"), 
    es = c(1.2, 1.4, 1.6, 1.3, 1.5), ci_low = c(1.1, 1.3, 1.5, 
    1.2, 1.4), ci_upp = c(1.3, 1.5, 1.7, 1.4, 1.6), label = structure(c(1L, 
    3L, 5L, 2L, 4L), .Label = c("1.2 (1.1, 1.3)", "1.3 (1.2, 1.4)", 
    "1.4 (1.3, 1.5)", "1.5 (1.4, 1.6)", "1.6 (1.5, 1.7)"), class = "factor"), 
    set = structure(c(1L, 1L, 1L, 2L, 2L), .Label = c("H", "S"
    ), class = "factor")), .Names = c("characteristic", "es", 
"ci_low", "ci_upp", "label", "set"), class = "data.frame", row.names = c(NA, 
-5L))

タイラーのソリューションを使用すると、そのグラフは現時点では次のようになります。

ここに画像の説明を入力してください

フォレストプロットと同様に、labelグラフ化された値を表す2番目のラベルセット(データフレーム内の変数)を、できればパネルの右側に追加します。すべてがこの例のようなフォレストプロットを模倣するように:

ここに画像の説明を入力してください

2番目の軸が眉をひそめているように見えることを私は知っています。しかし、これらは単なる別のラベルのセットです。それはフォレストプロットの間の習慣のようです。

ggplotでそれを行うにはどうすればよいですか?

4

2 に答える 2

6

ggplot20.9.3への更新を編集します

テストデータフレームのラベルのセットをファセットグラフに追加するのは簡単です。geom_textラベルの美学、およびラベルのx位置とy位置で使用します。以下のコードでxlimは、ラベル用にもう少しスペースを作成します。次のコード:

library(gridExtra)
library(ggplot2)

p <- ggplot(test, aes(y = characteristic, x = es, xmin = ci_low, xmax = ci_upp)) + 
  geom_point() +   
  geom_errorbarh(height = 0) +
  geom_text(aes(label = label, x = 2, y = characteristic)) + 
  scale_x_continuous(limits = c(1, 2.2), breaks = c(1, 1.2, 1.4, 1.6, 1.8),
    labels=c("1.0", "1.2", "1.4", "1.6", "1.8")) +
  facet_grid(set ~ ., scales = "free", space = "free") +
  theme_bw() + 
  theme(strip.text.y = element_text(angle = 0),
    panel.grid.major = element_blank(),
    panel.grid.minor = element_blank())
p

grid.text(expression(paste("ES " %+-% " ci")), x = 0.78,   y = .92,
   gp = gpar(fontsize = 18))

生成:

ここに画像の説明を入力してください

于 2012-04-19T01:49:51.643 に答える
0

これが私の答えです:(完全な答えが見つからなかったため、投稿を削除しています。まだ「ダイヤモンド」の概要を追加しようとしています)

それは多くの「自動化」されています。

  • lgOR =推定値とCI95%のデータ。

  • ci_lower = 95%CI低い

  • ci_upper = 95%CI上限

  • 著者=著者/日付

  • Model_pars <-paste(orH2、ort2、orI2、orModel、orModel_sig、sep = "|")#これらは異質性の統計です-サブタイトルとして。

     min_v     <- floor(min(lgOR$ci_lower))
     max_v     <- ceiling(max(lgOR$ci_upper))
     OR_v      <- as.matrix( round(lgOR$OR,2) )
     ORci      <- paste("(", round(lgOR$ci_lower,2), "|", round(lgOR$ci_upper,2), ")" )
    
     ggplot(data=lgOR, aes(y=1:nrow(lgOR), x=OR, xmin=ci_lower, xmax=ci_upper)) +
       geom_point() + 
       geom_errorbarh(height=.3) +
       scale_y_continuous(name = "", breaks=1:nrow(lgOR), labels=lgOR$author ) +
       scale_x_continuous(limits = c( min_v, max_v + 3 ), 
                          breaks = c( min_v:max_v, max_v + 3 ),
                          expand = c(0,0) )+
       labs(title='Effect Size by Study', x=Model_pars, y = 'Study') +
       geom_vline(xintercept=0, color='black', linetype='dashed', alpha=.5) +
       theme( axis.title.x = element_text(size = 8),
              axis.text.x = element_text(size = 7),
              axis.title.y = element_text(size = 1)) +
       geom_text(aes(x=9, label= paste(OR_v, ORci ))) 
    
于 2021-10-11T11:08:58.510 に答える