0

私はSOは初めてで、Rは比較的新しいので、気楽にやってください!

これが私のシナリオです。24 のメタ分析ディストリビューション (Dist1-Dist24) を持つデータフレームがあります。各分布について、外れ値除去前 (ES1.before-ES7.before) と外れ値除去後 (ES1.after-ES7.after) のそれぞれのメタ分析平均効果サイズの 7 つの推定値があります。したがって、ディストリビューションごとに合計 14 ポイントが存在する可能性があります。

私ができること:以下のデータフレームとスクリプトを使用して、各分布のすべての推定値をプロットできます。

「|」を使用して区切られたデータフレームを次に示します。(パイプ)。一部のセルは意図的に空白になっていることに注意してください。

|x|ES1.before|ES2.before|ES3.before|ES4.before|ES5.before|ES6.before|ES7.before|ES1.after|ES2.after|ES3.after|ES4.after|ES5.after|ES6.after|ES7.after|
|Dist 1|-0.10|-0.1|-0.02|-0.04|-0.13|-0.03|0.00|-0.09|-0.09|-0.04|-0.06|-0.11|-0.03|-0.010|
|Dist 2|-0.11|-0.11|-0.06|-0.07|-0.14|-0.08|-0.06|-0.09|-0.09|-0.06|-0.07|-0.11|-0.08|-0.06|
|Dist 3|-0.12|-0.13|-0.03|-0.12|-0.15|-0.07|-0.02|-0.09|-0.09|-0.03|-0.04|-0.11|-0.04|0.00|
|Dist 4|-0.09|-0.09|-0.03|-0.04|-0.13|-0.05|-0.01|-0.11|-0.11|-0.06|-0.08|-0.13|-0.06|-0.05|
|Dist 5|-0.17|-0.17|-0.13|-0.13|-0.19|-0.11|-0.13|-0.16|-0.16|-0.13|-0.12|-0.18|-0.11|-0.13|
|Dist 6|-0.10|-0.10|-0.03|-0.04|-0.13|-0.04|-0.02|-0.08|-0.08|-0.04|-0.04|-0.10|-0.03|-0.02|
|Dist 7|-0.07|-0.07|-0.02|-0.02|-0.09|-0.06|-0.01|-0.08|-0.08|-0.03|-0.07|-0.09|-0.10|-0.01|
|Dist 8|-0.04|-0.05|0.00|-0.04|-0.09|-0.01|-0.01|-0.03|-0.03|-0.01|-0.01|-0.06|-0.01|0.00|
|Dist 9|-0.15|-0.15|-0.08|-0.11|-0.17|-0.08|-0.05|-0.12|-0.12|-0.08|-0.11|-0.14|-0.08|-0.07|
|Dist 10|-0.09|-0.09|-0.03|-0.05|-0.12|-0.03|0.00|-0.08|-0.09|-0.02|-0.05|-0.10|-0.03|0.00|
|Dist 11|-0.12|-0.09|-0.02|-0.02|-0.14|0|0.01|-0.12|-0.12|-0.07|-0.07|-0.13|-0.09|0.08|
|Dist 12|-0.07|-0.07|-0.02|-0.02|-0.11|-0.02|-0.01|
|Dist 13|-0.09|-0.09|-0.03|-0.05|-0.13|-0.03|-0.01|-0.07|-0.07|-0.03|-0.04|-0.09|-0.01|-0.01|
|Dist 14|-0.1|-0.09|-0.04|-0.06|-0.12|-0.05|-0.01|-0.12|-0.12|-0.05|-0.12|-0.14|-0.09|0.01|
|Dist 15|-0.05|-0.05|-0.04|-0.04|-0.04|-0.04|-0.03|
|Dist 16|-0.17|-0.17|-0.07|-0.11|-0.20|-0.09|-0.03|-0.16|-0.16|-0.07|-0.11|-0.18|-0.09|-0.07|
|Dist 17|-0.18|-0.18|-0.06|-0.18|-0.23|-0.09|-0.11|                     
|Dist 18|-0.23|-0.23|-0.05|-0.21|-0.26|-0.15|0.01|-0.11|-0.10|-0.04|-0.11|-0.12|-0.09|0.02|
|Dist 19|-0.07|-0.07|-0.02|-0.02|-0.12|-0.05|-0.01|-0.06|-0.06|-0.03|-0.03|-0.07|-0.02|0.00|
|Dist 20|-0.10|-0.10|-0.04|-0.07|-0.13|-0.06|-0.02|-0.10|-0.10|-0.04|-0.08|-0.12|-0.06|-0.02|
|Dist 21|-0.10|-0.10|-0.03|-0.05|-0.13|-0.04|-0.01|-0.09|-0.09|-0.05|-0.07|-0.11|-0.06|-0.05|
|Dist 22|-0.15|-0.15|-0.15|-0.15|-0.19|-0.04|-0.11|
|Dist 23|-0.11|-0.11|-0.05|-0.06|-0.14|-0.03|0.03|
|Dist 24|-0.10|-0.10|-0.04|-0.06|-0.16|-0.03|-0.05|-0.10|-0.10|-0.06|-0.07|-0.13|-0.04|-0.05|

これが私のコードです:

# setwd("your path")

# install packages
install.packages("ggplot2")
library(ggplot2)
install.packages("reshape2")
library(reshape2)
windowsFonts(TNR = windowsFont("Times New Roman"))

# load the data 
d1 <- read.table(file.choose(), sep=",", header=TRUE)

# normalize the data (i.e., convert into 'long' form)
dat1 = melt(d1, id.vars = "x")

# Set x factor order in order that appears in data
dat1$x = factor(dat1$x, levels = unique(dat1$x))

# Begin plotting
Fig1 <- ggplot(dat1, aes(x=x, y= value))+
    geom_point(aes(shape = variable)) +
    geom_line(data=dat1[!is.na(dat1$value),]) +
    scale_shape_manual(values = 0:13) +
    geom_hline(yintercept = 0, linetype=2) +
    coord_flip() +
    xlab('Distribution') +
    ylab('Effect size') +
    ylim(-.30, .05)

Fig1 <- Fig1 + 
    theme_bw() + 
    theme(panel.border = element_blank(), 
          panel.grid.major = element_blank(),
          panel.grid.minor = element_blank(), 
          axis.line.x = element_line(colour = "black"),
          axis.line.y = element_line(colour = "black"),
          axis.text.x = element_text(size = 8),
          axis.text.y = element_text(size = 8),
          legend.position = ("bottom"),
          legend.title=element_blank(),
          legend.text=element_text(size=8),
          legend.key = element_rect(colour = NA))

Fig1

これが私が作成できる図です:

効果量の分布

(1) データフレーム、(2) 構文、および (3) プロットは、ここの Dropbox フォルダーにあります。

2 つの質問があります。

(1) ES1.before と ES1.after (など) は同じ形を共有しているが、異なる色を持つことはできますか? たとえば、ES1.before を青色の形状、ES1.after を赤色の形状、ES2.before と ES2.after をそれぞれ異なる青色と赤色の形状などにする方法はありますか?

(2) 現在、効果量の値が同じ場合、形状が重なります。効果サイズの値が同じ場合に、形状を積み重ねる方法はありますか? 「覆い焼き」と「ジッター」機能を広範囲に試してみましたが、解決策を見つけることができなかったことに注意してください。

私を助けてくれる人に感謝します:)不明な点があればお詫びします。ご不明な点がございましたら、ご説明いただければ幸いです。

4

1 に答える 1

0

これはうまくいきますか?ggplot で色や形を変更したい場合は、プロットする data_frame の列を鋸歯状にして美学を調整する変数を作成することをお勧めします。そのため、前/後を変数から削除した独自の列に移動しました。

library(dplyr)
library(magrittr)
library(ggbeeswarm)
dat1 %<>% mutate(time = gsub(".*\\.", "", variable),
             variable = gsub("\\..*", "", variable))

# Begin plotting
Fig1 <- ggplot(dat1, aes(x=x, y= value, colour = time, group = variable))+
    geom_point(aes(shape = variable), position = position_quasirandom()) +
    geom_line(data=dat1[!is.na(dat1$value),], aes(colour = NULL, group = NULL)) +
    scale_shape_manual(values = 0:13) +
    geom_hline(yintercept = 0, linetype=2) +
    coord_flip() +
    xlab('Distribution') +
    ylab('Effect size') +
    ylim(-.30, .05)

Fig1 <- Fig1 + 
    theme_bw() + 
    theme(panel.border = element_blank(), 
          panel.grid.major = element_blank(),
          panel.grid.minor = element_blank(), 
          axis.line.x = element_line(colour = "black"),
          axis.line.y = element_line(colour = "black"),
          axis.text.x = element_text(size = 8),
          axis.text.y = element_text(size = 8),
          legend.position = ("bottom"),
          legend.title=element_blank(),
          legend.text=element_text(size=8),
          legend.key = element_rect(colour = NA))

Fig1

ここに画像の説明を入力

# Bonus: Instead of setting all of those theme parameters each time try theme_set
# if you call this at the start of your script all of your plots will inherit these attributes
# these are just what I use regularly
theme_set(theme_light() + theme(axis.title = element_text(size = rel(1.5)),
                            axis.text = element_text(size = rel(1.5)),
                            plot.title = element_text(size = rel(2)),
                            strip.text = element_text(size = rel(1.5)),
                            legend.title = element_text(size = rel(1.5), face = "bold"),
                            legend.text = element_text(size = rel(1.5)),
                            axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = .5)))
于 2016-09-26T19:40:09.683 に答える