2012-04-17 5 views
5

Строительство на моем previous question Я хотел бы добавить метку второй оси на противоположной стороне участка.Как добавить метки второй оси в ggplot2?

Фрейм данных выглядит следующим образом:

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)) 

Используя Tyler's solution, график его выглядит, что на данный момент:

enter image description here

аналогичным образом на лесном участке I» d хотел бы добавить второй набор меток (label переменной в моем кадре данных), представляющий графические значения, предпочтительно с правой стороны панелей. Так что все это подражает участок леса как на примере:

enter image description here

Я знаю, что вторая ось seems to be frowned upon. Однако это всего лишь еще один набор ярлыков. Ант, похоже, является обычным явлением среди лесных участков.

Как это сделать в ggplot?

+1

ответы здесь будет, возможно, даст вам отправную точку: http://stackoverflow.com/questions/4867597/can-you-easily- plot-rugs-axes-on-the-top-right-in-ggplot2/4868130 # 4868130 – Chase

+0

@Chase: Спасибо за это. Действительно, очень легко взломать, используя 'plot'. Все еще интересно, можно ли это сделать в ggplot2? – radek

+1

Вторая ось нахмуривается только тогда, когда она представляет собой совершенно другую переменную (например, температуру и концентрацию осадка). Вторая ось, которая является преобразованной версией первого, является совершенно приемлемой (например, температура в C, или в K, или в F). –

ответ

4

EDIT обновление для ggplot2 0.9.3

Добавление набора меток в тестовой dataframe на граненый графике просто. Используйте 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)) 

производит:

enter image description here

+0

Фантастический. Большое спасибо за помощь! – radek

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