2015-03-01 2 views
1

Я пытаюсь удалить неиспользованные факторы из многогранного графика. Я рассмотрел множество потенциальных решений, и ни один из них не работает. Я надеюсь на небольшую помощь.Факторы удаления, не используемые в нескольких facet_grid в ggplot2

Этот вопрос был недавно спросил здесь: Removing unused factors from a facet_grid in ggplot2

Но оригинальный плакат не расфасованная свои данные для тех, кто заинтересован в ответе на помощь. Поэтому с тех пор я буду иметь ту же проблему.

dput(df) 
structure(list(Study = c("Study 1", "Study 1", "Study 1", "Study 1", 
"Study 2", "Study 2", "Study 2", "Study 2", "Study 2", "Study 2" 
), Subgroup = c("1", "1", "2", "2", "3", "3", "4", "4", "5", 
"5"), q.25. = c(254.850799560547, 161.833641052246, 27.8351449966431, 
18.8721599578857, 187.17, 30.74, 973.94, 155.62, 566.7, 296.09 
), q.50. = c(645.594482421875, 736.949829101562, 72.1439666748047, 
52.3485088348389, 493.04, 84.11, 2164.89, 395.1, 2411.45, 750.5 
), q.75. = c(981.924682617188, 1726.68432617188, 247.794635772705, 
239.050010681152, 1688.49, 243.02, 3633.31, 737.78, 4396.14, 
1565.57), Variable = c("Chemical 1", "Chemical 2", "Chemical 1", 
"Chemical 2", "Chemical 1", "Chemical 2", "Chemical 1", "Chemical 2", 
"Chemical 1", "Chemical 2")), .Names = c("Study", "Subgroup", 
"q.25.", "q.50.", "q.75.", "Variable"), row.names = c(NA, -10L 
), class = "data.frame") 

Я пытаюсь сделать сюжет, используя этот код:

ggplot(droplevels(df), aes(x = Subgroup, y = q.50., ymin = q.25., ymax = q.75.)) + 
facet_grid(Study~ Variable, scales="free", drop = TRUE)+ 
geom_pointrange(position=position_dodge(width=1), size=1.1)+ 
ylab("Concentration (ng/g-lipid)")+ 
ggtitle("")+ 
scale_y_log10()+ 
theme(axis.title.y = element_blank(),axis.text.x = element_text(angle = -30, hjust=0), axis.text.y = element_text(colour="grey20",face="bold"))+ 
coord_flip() 

Вот фигура: enter image description here

Спасибо заранее.

+0

Если вы можете терпеть имея 'Study' быть" X ", тогда' facet_grid (Variable ~ Study, scale = "free", drop = TRUE) 'будет делать это. Причина, по которой обратное не работает (и не может), должна быть очевидной, если вы избавитесь от 'coord_flip'. К сожалению, 'ggplot' не корректирует, как он вычисляет то, что' free' должно делать, если вы включаете 'coord_flip'. – BrodieG

ответ

0

Вы можете использовать facet_wrap, чтобы сделать это, но, к сожалению, вы не можете использовать coord_flip() с ним:

library(ggplot2) 
ggplot(droplevels(df), aes(x = Subgroup, y = q.50., ymin = q.25., ymax = q.75.)) + 
    facet_wrap(Study ~ Variable, scales="free", drop = TRUE, ncol=2)+ 
    geom_pointrange(position=position_dodge(width=1), size=1.1)+ 
    ylab("Concentration (ng/g-lipid)")+ 
    ggtitle("")+ 
    scale_y_log10()+ 
    theme(axis.title.y = element_blank(),axis.text.x = element_text(angle = -30, hjust=0), axis.text.y = element_text(colour="grey20",face="bold")) 

Выход:

enter image description here

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