ggplotの係数プロットに散布図を追加する

デビッドジョンソン

データポイントの散布図をその上に配置して、係数プロットを作成しようとしています。データの一部を以下に示します。

print(dat)

                   lower    upper      mode    condition   obsMean p100 p102 p103 p104 p105
ob.h.Black.650  0.693595 0.950305 0.8849853  h.Black.650 0.8122302 0.85 1.00 0.85 0.85 0.85
ob.h.White.650  0.649625 0.930375 0.8306119  h.White.650 0.7852518 0.70 0.95 0.80 0.80 0.90
ob.h.Black.800  0.833255 0.993105 0.9701335  h.Black.800 0.9035971 0.95 1.00 0.95 0.95 1.00
ob.h.White.800  0.802110 0.983230 0.9469604  h.White.800 0.8762590 0.95 0.95 0.80 1.00 0.85
ob.h.Black.950  0.869375 0.995800 0.9804180  h.Black.950 0.9165468 0.90 1.00 0.85 1.00 1.00
ob.h.White.950  0.862895 0.991750 0.9694811  h.White.950 0.9046763 1.00 1.00 0.95 1.00 0.90
ob.h.Black.1100 0.879340 0.996550 0.9885382 h.Black.1100 0.9323741 1.00 1.00 0.90 0.75 0.85
ob.h.White.1100 0.853110 0.994405 0.9773240 h.White.1100 0.9140288 0.95 0.95 1.00 0.90 0.90

私のコードは以下に示す出力を生成します:

ggplot(dat, aes(x = reorder(condition, 1:8), y = mode)) + #X is cond, Y is mode
  geom_point(size = 4) + #Add in black dots for the modes
  geom_pointrange(aes(ymin = lower, ymax = upper)) + #Add in 95% HDI bars
  geom_point(aes(x = reorder(condition, 1:8), y = obsMean), size = 4, colour = "red") +
  geom_point(aes(x = reorder(condition, 1:8), y = p100), #X is cond, Y is a Ps mean
    position = position_jitter(width = .2, height = 0), #jitter the data point
    size = 2, colour = "blue") +  #make it small and blue
  geom_point(aes(x = reorder(condition, 1:8), y = p102), #X is cond, Y is a Ps mean
    position = position_jitter(width = .2, height = 0), #jitter the data point
    size = 2, colour = "blue") +  #make it small and blue
  geom_point(aes(x = reorder(condition, 1:8), y = p103), #X is condition, Y is a Ps mean
    position = position_jitter(width = .2, height = 0), #jitter the data point
    size = 2, colour = "blue") +  #make it small and blue
  geom_point(aes(x = reorder(condition, 1:8), y = p104), #X is condition, Y is a Ps mean
    position = position_jitter(width = .2, height = 0), #jitter the data point
    size = 2, colour = "blue") +  #make it small and blue
  geom_point(aes(x = reorder(condition, 1:8), y = p105), #X is condition, Y is a Ps mean
    position = position_jitter(width = .2, height = 0), #jitter the data point
    size = 2, colour = "blue") +  #make it small and blue
  coord_cartesian(ylim = c(.6, 1)) + #Scale the graph from .6 to 1
  ylab("Hit Rate") + #Add y axis label
  theme_bw() +  #Use black and white theme
  theme(axis.title.x = element_blank(), #Get rid of the x-axis label
    panel.background = element_blank(), #Get rid of the background
    panel.grid = element_blank(), #Get rid of the gridlines
    panel.border = element_rect(colour = "black", fill = NA, size = 1))  #Add border

これはこのプロットを生成します。

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

ご覧のとおり、コードは非効率的です。条件の平均と信頼区間にオーバーレイするポイントのセットごとに、別のコード行を入力する必要があります。完全なデータセットで139回繰り返されるため、これは特に面倒です。個々の繰り返しを平均とCIにオーバーレイするより効率的な方法があるかどうか疑問に思いました。

Jaap

コメントですでに述べたように、データを長い形式に再形成する必要があります。これは、どちらかで行うことができreshape2data.tableまたはtidyr

library(reshape2)
dat2 <- melt(dat, measure.vars = c("p100","p102","p103","p104","p105"))

library(data.table)
# method 1 (equivalent to the reshape2 method)
dat2 <- melt(setDT(dat), measure.vars = c("p100","p102","p103","p104","p105"))
# method 2
dat2 <- melt(setDT(dat), measure.vars = patterns("^p"))

library(tidyr)
dat2 <- dat %>% gather(variable, value, c(p100,p102,p103,p104,p105))

次に、のファクターレベルをcondition正しい順序で設定します。

dat2$condition <- factor(dat2$condition, levels = c("h.Black.650","h.White.650","h.Black.800","h.White.800",
                                                    "h.Black.950","h.White.950","h.Black.1100","h.White.1100"))

最後に、次のようにプロットコードを簡略化できます。

ggplot(dat2, aes(x = condition, y = mode)) + 
  geom_point(size = 4) + 
  geom_pointrange(aes(ymin = lower, ymax = upper)) + 
  geom_point(aes(x = condition, y = obsMean), size = 4, colour = "red") +
  geom_point(aes(x = condition, y = value), 
             position = position_jitter(width = .2, height = 0), 
             size = 2, colour = "blue") + 
  coord_cartesian(ylim = c(.6, 1.01)) +
  ylab("Hit Rate") +
  theme_bw() +
  theme(axis.title.x = element_blank(), 
        panel.background = element_blank(), 
        panel.grid = element_blank(),
        panel.border = element_rect(colour = "black", fill = NA, size = 1))

これにより、次のプロットが作成されます。

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

さらに、青い点をp変数で色付けすることを検討してください。

ggplot(dat2, aes(x = condition, y = mode)) + 
  geom_point(size = 4) + 
  geom_pointrange(aes(ymin = lower, ymax = upper)) + 
  geom_point(aes(x = condition, y = obsMean), size = 4, colour = "red") +
  geom_point(aes(x = condition, y = value, color = variable), 
             position = position_jitter(width = .2, height = 0), size = 2) + 
  coord_cartesian(ylim = c(.6, 1.01)) +
  ylab("Hit Rate") +
  theme_bw() +
  theme(axis.title.x = element_blank(), 
        panel.background = element_blank(), 
        panel.grid = element_blank(),
        panel.border = element_rect(colour = "black", fill = NA, size = 1))

これにより、次のようになります。

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

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

相関係数を持つイタリック体のrをggplotの散布図に追加する

分類Dev

Python:1つの図に複数の散布図をプロットする

分類Dev

散布図の上に追加の点をプロットする方法は?

分類Dev

Python Plotly:複数のサブプロットを持つ散布図に水平線を追加する

分類Dev

Python Plotly:複数のサブプロットを持つ散布図に水平線を追加する

分類Dev

プロット散布図でポイントを係数で分割する

分類Dev

rのペア関数を使用して散布図の点プロットを追加する方法は?

分類Dev

QCustomPlotは、既存のプロットの上に散布図を追加します

分類Dev

1つの散布図の独自の列に複数のデータセットをプロットする方法

分類Dev

ggplot2を使用して1つの散布図のx軸に複数の列をプロットする方法は?

分類Dev

散布図をプロットする方法

分類Dev

ヒートマップの上に散布図をプロットする

分類Dev

R:プロット:小数点以下の桁数が変化する散布図ポイントにラベルを追加する

分類Dev

同じ図に密度プロットと散布図をプロットする

分類Dev

対数を使用して散布図に0の値をプロットします

分類Dev

片側に係数、別の側に散布図、対角線上に分布を持つ相関行列プロット

分類Dev

R-デフォルトのプロット関数を強制的に散布図にする

分類Dev

ggplot2-複数のプロット図にラベルを追加する方法は?

分類Dev

r:散布図に複数の線をプロットするときの空白のグラフ

分類Dev

回帰係数から散布図に回帰直線をプロットします

分類Dev

JSONとVega-liteを使用して散布図に複数の点をプロットする

分類Dev

2 つの散布図を 1 つのグラフにプロットする

分類Dev

2つの別々のデータセット行を使用して散布図にggplot凡例を追加する方法

分類Dev

散布図に2桁の表記でプロットする

分類Dev

散布図にラベルをプロットする

分類Dev

画像に散布図をプロットする方法は?

分類Dev

Rまたはggplot2を使用して、散布図のyアジスに関するデータを箱ひげ図でプロットします。

分類Dev

Pythonの散布図に線をオーバープロットする方法は?

分類Dev

散布図の上に折れ線グラフをプロットする

Related 関連記事

  1. 1

    相関係数を持つイタリック体のrをggplotの散布図に追加する

  2. 2

    Python:1つの図に複数の散布図をプロットする

  3. 3

    散布図の上に追加の点をプロットする方法は?

  4. 4

    Python Plotly:複数のサブプロットを持つ散布図に水平線を追加する

  5. 5

    Python Plotly:複数のサブプロットを持つ散布図に水平線を追加する

  6. 6

    プロット散布図でポイントを係数で分割する

  7. 7

    rのペア関数を使用して散布図の点プロットを追加する方法は?

  8. 8

    QCustomPlotは、既存のプロットの上に散布図を追加します

  9. 9

    1つの散布図の独自の列に複数のデータセットをプロットする方法

  10. 10

    ggplot2を使用して1つの散布図のx軸に複数の列をプロットする方法は?

  11. 11

    散布図をプロットする方法

  12. 12

    ヒートマップの上に散布図をプロットする

  13. 13

    R:プロット:小数点以下の桁数が変化する散布図ポイントにラベルを追加する

  14. 14

    同じ図に密度プロットと散布図をプロットする

  15. 15

    対数を使用して散布図に0の値をプロットします

  16. 16

    片側に係数、別の側に散布図、対角線上に分布を持つ相関行列プロット

  17. 17

    R-デフォルトのプロット関数を強制的に散布図にする

  18. 18

    ggplot2-複数のプロット図にラベルを追加する方法は?

  19. 19

    r:散布図に複数の線をプロットするときの空白のグラフ

  20. 20

    回帰係数から散布図に回帰直線をプロットします

  21. 21

    JSONとVega-liteを使用して散布図に複数の点をプロットする

  22. 22

    2 つの散布図を 1 つのグラフにプロットする

  23. 23

    2つの別々のデータセット行を使用して散布図にggplot凡例を追加する方法

  24. 24

    散布図に2桁の表記でプロットする

  25. 25

    散布図にラベルをプロットする

  26. 26

    画像に散布図をプロットする方法は?

  27. 27

    Rまたはggplot2を使用して、散布図のyアジスに関するデータを箱ひげ図でプロットします。

  28. 28

    Pythonの散布図に線をオーバープロットする方法は?

  29. 29

    散布図の上に折れ線グラフをプロットする

ホットタグ

アーカイブ