2015-10-13 103 views
1

我試圖躲避一對使用ggplot的兩個模型的均值和置信區間。我已經看過類似的問題,如thisthis,但他們的代碼沒有解決我的問題。在ggplot Dash間隔

我有以下的數據幀(注意,條件是一個因素,因爲你降下來的數據幀值增加):

>print(dat) 
    condition  pH lowerH upperH model 
1 Black 650 0.7863719 0.6863438 0.8548062 pdp 
2 Black 650 0.8428675 0.7123000 0.9574000 ddm 
3 White 650 0.8133078 0.7310262 0.8864712 pdp 
4 White 650 0.8211373 0.6838000 0.9488000 ddm 
5 Black 800 0.8754109 0.7908725 0.9306012 pdp 
6 Black 800 0.9408192 0.8410000 0.9941000 ddm 
7 White 800 0.9044102 0.8349587 0.9623462 pdp 
8 White 800 0.9183600 0.8145000 0.9867000 ddm 
9 Black 950 0.9003072 0.8403200 0.9601112 pdp 
10 Black 950 0.9569349 0.8812000 0.9967000 ddm 
11 White 950 0.9131546 0.8494812 0.9648262 pdp 
12 White 950 0.9473685 0.8683000 0.9934000 ddm 
13 Black 1100 0.9091797 0.8342850 0.9622412 pdp 
14 Black 1100 0.9708420 0.8864000 0.9977000 ddm 
15 White 1100 0.9274862 0.8636063 0.9691300 pdp 
16 White 1100 0.9570067 0.8727000 0.9954000 ddm 

我試圖繪製平均值(pH值)和置信區間( lowerH,upperH)作爲所用模型(模型)的函數。我想要的是避免手段和配置項使它們不重疊。我已經寫了下面的代碼ggplot:

ggplot(dat, aes(x = condition, y = pH)) + 
    geom_point(size = 3, shape = 5) + #pred cond mean 
    geom_pointrange(aes(ymin = lowerH, ymax = upperH), size = .2) + #95% HDI 
    coord_cartesian(ylim = c(.5, 1.01)) + #adjust x-axis 
    ylab("Hit Rate") + #label y axis 
    theme_bw() + #black and white theme 
    theme(axis.title.x = element_blank(), 
    panel.background = element_blank(), 
    panel.grid = element_blank(), 
    panel.border = element_rect(colour = "black", fill = NA, size = 1)) 

它創建這個輸出

正如你可以看到,兩個模型重疊的手段和獨聯體國家。但是,當我嘗試躲避它們時,正如我在下面的代碼中所做的那樣,我只能成功將所有數據點移到左側(模型方法和CI仍然重疊)。

ggplot(dat, aes(x = condition, y = pH)) + 
    geom_point(size = 3, shape = 5, position = position_dodge(5)) + #pred cond mean 
    geom_pointrange(aes(ymin = lowerH, ymax = upperH), size = .2) + #95% HDI 
    coord_cartesian(ylim = c(.5, 1.01)) + #adjust x-axis 
    ylab("Hit Rate") + #label y axis 
    theme_bw() + #black and white theme 
    theme(axis.title.x = element_blank(), 
    panel.background = element_blank(), 
    panel.grid = element_blank(), 
    panel.border = element_rect(colour = "black", fill = NA, size = 1)) 

我在尋找的是一種避開模型方法和配置項的方法,使它們不重疊。示例代碼特別有用。

+0

[閃躲點和誤差線與ggplot](可能的重複http://stackoverflow.com/questions/25789434/dodge-points-and-error-bars -with-ggplot) – aosmith

回答

2

你需要添加一個groupcolor的水平的情節。在這裏我使用col,你也可以使用group保持顏色一致的:

ggplot(dat, aes(x = condition, y = pH, col = model)) + 
    geom_point(size = 3, shape = 5, position = position_dodge(1)) + 
    geom_pointrange(aes(ymin = lowerH, ymax = upperH), 
        position = position_dodge(1), size = .2) 

enter image description here

+0

謝謝。這解決了我的問題!我想指出的一件事是,即使數據沒有分組(即,一個數據不能分組),任何其他正在圖中使用的數據也必須包含「x」,「y」和「group」觀察到的平均值不是任一模型的函數 - 用於比較模型)。 –