2015-10-13 3 views
1

Я пытаюсь уклониться от пары средств и доверительных интервалов для двух моделей, используя ggplot. Я рассмотрел похожие вопросы, такие как this и this, но их код не касается моей проблемы.Интервалы уклонения в ggplot

У меня есть следующие кадр данных (обратите внимание, что условие является одним из факторов, значения увеличиваются, как вы спускаетесь вниз фрейм данных):

>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 

Я пытаюсь построить среднюю (рН) и доверительный интервал (lowerH, upperH) для каждого условия в зависимости от используемой модели (модели). Я бы хотел, чтобы средства и CI были уклонились, чтобы они не перекрывались. Я написал следующий код: 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)) 

который создает этот выход

Как вы можете видеть, что средства и Cis для обеих моделей перекрываются. Однако, когда я пытаюсь уклониться от них, как я сделал в приведенном ниже коде, мне остается только перемещать все точки данных влево (с использованием средств модели и 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)) 

Что я ищу - это способ уклониться от средств модели и CI, чтобы они не пересекались. Пример кода особенно полезен.

+0

Возможный дубликат [уворачиваясь точек и погрешностями с ggplot] (http://stackoverflow.com/questions/25789434/dodging-points-and-error-bars-with-ggplot) – aosmith

ответ

2

Необходимо добавить уровень group или color к участку. Здесь я использую 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», даже если данные не сгруппированы (т. Е. наблюдаемое среднее значение, которое не является функцией любой модели, используемой для сравнения моделей). –

Смежные вопросы