ggplot2 strip文本标签facet_wrap

时间:2012-07-11 23:22:42

标签: r ggplot2

我在这个主题上搜索了其他帖子,但无法弄清楚我的问题。我有关于巴西政府机构的预算数据,并对机构类型进行了分类。为了制作我的情节,我这样做:

g <- ggplot(data=totalex.df, aes(x=year, y=totalex.billions))

g + 
geom_line(aes(colour=factor(agency.type))) + 
facet_wrap(agency.type ~  unit, ncol=6) + 
opts(strip.text.x = theme_text(size=2)) + 
opts(axis.text.x=theme_text(size=4)) + 
opts(legend.position="none") + 
scale_y_sqrt("total expenditure (billions)")

我的问题是,我的方面标签现在包含两条信息:代理商类型和单位名称 - 使用上述代码生成的this is a pdf of the graph。我只希望它包含单位的名称。但是,如果我从facet_wrap命令中删除agency.type,ggplot会丢失代理的顺序。

dput(totalex.df)的输出很长,但这是前100次观察

> dput(totalex.df.short)
structure(list(year = c(2006, 2006, 2006, 2006, 2006, 2006, 2006, 
2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 
2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 
2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 
2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 
2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 
2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2007, 2007, 
2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 
2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 
2007, 2007, 2007, 2007, 2007), totalex = c(312685301, 46492724, 
85210069, 1478565787, 193941282, 260659307, 8327549603, 0, 18474604, 
91006939, 53538760, 91800981, 402711174, 1290377603, 978348209, 
48360776, 24676283, 89820385, 1038592122, 5364674136, 127383506, 
7552311, 3847705355, 232732854, 34317692, 351714802, 156996087, 
104782402, 0, 47741444, 475303761, 229743044, 102577783, 19106706, 
78619935, 0, 730381485, 998733938, 110785185, 37114540, 108530853, 
0, 0, 0, 2660417864, 169144966, 104350391, 1038914804, 336660855, 
11995616, 0, 0, 9085111, 0, 5281402, 138708048, 11283655, 478421026, 
221976619, 95680527, 8270558, 890375094, 0, 156563720, 198830207, 
286909569, 5525428151, 734738984, 218905808, 1120014693, 859180, 
359873525, 50214197, 95572929, 1628550454, 227051722, 286610734, 
8868199792, 17388668, 19551190, 101047436, 58123546, 101878908, 
423760647, 1019623567, 1061465081, 49559379, 24278026, 110344326, 
1145862548, 7610896352, 163919333, 8376104, 4355447941, 282679957, 
45506963, 392551882, 208594544, 122420822, 0), agency.type = structure(c(NA, 
NA, NA, 3L, 1L, 1L, 7L, 1L, 1L, 1L, 1L, 1L, 4L, 1L, 1L, 1L, 1L, 
3L, 1L, 6L, 1L, 1L, 7L, 1L, 3L, 3L, 1L, 3L, 1L, 1L, 1L, 3L, 3L, 
1L, 3L, 1L, 1L, 1L, 3L, 3L, 3L, 1L, 5L, 3L, 1L, 5L, 3L, 1L, 1L, 
1L, 1L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 3L, 1L, 1L, 4L, 1L, 1L, 2L, 
1L, 1L, 3L, 1L, 1L, 3L, NA, NA, NA, 3L, 1L, 1L, 7L, 1L, 1L, 1L, 
1L, 1L, 4L, 1L, 1L, 1L, 1L, 3L, 1L, 6L, 1L, 1L, 7L, 1L, 3L, 3L, 
1L, 3L, 1L), .Label = c("Delivery", "Guidance for policy formulation / Research", 
"Regulatory", "Regulatory / Delivery", "Regulatory/Delivery", 
"Transfer / delivery", "Transfer/Regulatory/Deliver"), class = "factor"), 
    unit = structure(c(29L, 28L, 27L, 17L, 21L, 66L, 55L, 5L, 
    69L, 25L, 33L, 36L, 44L, 45L, 9L, 34L, 68L, 13L, 6L, 61L, 
    53L, 65L, 51L, 31L, 41L, 39L, 37L, 49L, 22L, 58L, 47L, 71L, 
    40L, 60L, 19L, 18L, 64L, 10L, 62L, 59L, 42L, 7L, 11L, 4L, 
    52L, 32L, 38L, 8L, 54L, 20L, 12L, 24L, 1L, 63L, 3L, 16L, 
    57L, 70L, 43L, 15L, 2L, 46L, 30L, 35L, 56L, 23L, 48L, 26L, 
    14L, 50L, 67L, 29L, 28L, 27L, 17L, 21L, 66L, 55L, 5L, 69L, 
    25L, 33L, 36L, 44L, 45L, 9L, 34L, 68L, 13L, 6L, 61L, 53L, 
    65L, 51L, 31L, 41L, 39L, 37L, 49L, 22L), .Label = c("Administrative Council of Economic Defense (CADE)                              ", 
    "Air Force Real Estate Funding Agency (CFIAE)                                   ", 
    "Alexandre Gusmao Foundation (FUNAG)                                            ", 
    "Amazon Development Superintendency (SUDAM)                                     ", 
    "Applied Economic Research Institute (IPEA)                                     ", 
    "Brazilian Agricultural Research Corporation (EMBRAPA)                          ", 
    "Brazilian Communication Company (EBC)                                          ", 
    "Brazilian Company of Urban Railway (CBTU)                                      ", 
    "Brazilian Institute of Environment and Renewable Natural Resources (IBAMA)     ", 
    "Brazilian Institute of Geography and Statistics (IBGE)                         ", 
    "Brazilian Institute of Museums (IBRAM)                                         ", 
    "Brazilian Military Material Industry (IMBEL)                                   ", 
    "Brazilian Securities Comission (CVM)                                           ", 
    "Brazilian Space Agency (AEB)                                                   ", 
    "Brazilian Tourism Company (EMBRATUR)                                           ", 
    "Brazilian Urban Railway (TRENSUBR)                                             ", 
    "Central Bank (BACEN)                                                           ", 
    "Chico Mendes Institute (ICMBio)                                                ", 
    "Civil Aviation National Agency (ANAC)                                          ", 
    "Cultural Foundation Palmares                                                   ", 
    "Dom Pedro II School                                                            ", 
    "Energy Research Company (EPE)                                                  ", 
    "Engineering, Construction and Railway (VALEC)                                  ", 
    "Excellence center in advanced electronic technology (CEITEC)                   ", 
    "Federal Centre of Educational Technology Celso Suckow da Fonseca (CEFET-RJ)    ", 
    "Graduate students improvement coordination (CAPES)                             ", 
    "Hospital Cristo Redentor S.A.                                                  ", 
    "Hospital F\x90mina S.A                                                            ", 
    "Hospital Nossa Senhora da Concei\x8d\x8bo S.A                                        ", 
    "Housing Building Fund for Mariners (CCCPMC)                                    ", 
    "Indigenous National Foundation (FUNAI)                                         ", 
    "Institute of the Historical and Artistic National Heritage (IPHAN)             ", 
    "Joaquim Nabuco Foundation                                                      ", 
    "Jorge Duprat Figueiredo Foundation (FUNDACENTRO)                               ", 
    "Manaus Free Trade Zone Superintendency (SUFRAMA)                               ", 
    "Minas Gerais Federal Centre of Educational Technology (CEFET-MG)               ", 
    "Mineral Resources Research Institute (CPRM)                                    ", 
    "National  Agency of Land Transport (ANTT)                                      ", 
    "National  Agency of Sanitary Supervision (ANVISA)                              ", 
    "National  Agency of Supplementary Health (ANS)                                 ", 
    "National  Agency of Water Transport (ANTAQ)                                    ", 
    "National Agency of Electrical Energy (ANEEL)                                   ", 
    "National Agency of Oil, Natural Gas and Biofuel (ANP)                          ", 
    "National Commission of Nuclear Energy (CNEN)                                   ", 
    "National Company of Food Supply (CONAB)                                        ", 
    "National Council of Scientific and Technological Development (CNPq)            ", 
    "National Department of Draught Prevention (DNOCS)                              ", 
    "National Department of Infrasctructure Transport (DNIT)                        ", 
    "National Department of Mineral Production (DNPM)                               ", 
    "National Development Trust (FND)                                               ", 
    "National Health Foundation (FUNASA)                                            ", 
    "National Institute of Colonization and Land Reform (INCRA)                     ", 
    "National Institute of Industrial Property (INPI)                               ", 
    "National Institute of Metrology, Normalization and Industrial Quality (Inmetro)", 
    "National Institute of Social Security (INSS)                                   ", 
    "National Institute of Studies and Educational Research  Anisio Teixeira (INEP) ", 
    "National Institute of Technology Information (ITI)                             ", 
    "National Library Foundation                                                    ", 
    "National Movies Agency (ANCINE)                                                ", 
    "National School of Public Administration Foundation (ENAP)                     ", 
    "National Trust of Education Development (FNDE)                                 ", 
    "National Water Agency (ANA)                                                    ", 
    "Northeast Development Superintendency (SUDENE)                                 ", 
    "Oswaldo Cruz Foundation (FIOCRUZ)                                              ", 
    "Ozorio Foundation                                                              ", 
    "Porto Alegre Clinic Hospital                                                   ", 
    "Private Insurance Superintendency (SUSEP)                                      ", 
    "Rio de Janeiro Botanical Gardens Research Institute                            ", 
    "Rui Barbosa House Foundation                                                   ", 
    "Sao Francisco and Parnaiba Valleys Development Company (CODEVASF)              ", 
    "Telecom National Agency (ANATEL)                                               "
    ), class = "factor")), .Names = c("year", "totalex", "agency.type", 
"unit"), row.names = c(NA, 100L), class = "data.frame")

2 个答案:

答案 0 :(得分:2)

与我最初的想法相反,我不认为labeller会对您有所帮助,因为它只适用于facet_grid,而不适用于facet_wrap。相反,我认为可以更容易地处理问题。方面的顺序由因子级别的顺序控制,因此重新排序unit级别以使它们按agency.type分组应该足够了。

agency.unit <- unique(totalex.df[c("agency.type", "unit")])

totalex.df$unit <- factor(totalex.df$unit, 
  levels = agency.unit[order(agency.unit$agency.type, 
                             agency.unit$unit), "unit"])

然后,您的facet_wrap不应该包含agency.type

facet_wrap(~  unit, ncol=6)

总计:

ggplot(data=totalex.df, aes(x=year, y=totalex)) + 
    geom_line(aes(colour=factor(agency.type))) + 
    facet_wrap( ~  unit, ncol=6) + 
    opts(strip.text.x = theme_text(size=2)) + 
    opts(axis.text.x=theme_text(size=4)) + 
    opts(legend.position="none") + 
    scale_y_sqrt("total expenditure (billions)")

enter image description here

即使无法阅读,第一个单位是“空军房地产资助机构(CFIAE)”,其次是“亚历山大古斯芒基金会(FUNAG)”,“应用经济研究所(IPEA)”等。

答案 1 :(得分:-2)

如果你给我们一些数据,那么它会有所帮助。如果dput(totalex.df)的输出不是太长,你可以将问题添加到你的问题中吗?

你想要每个unit的一个方面吗?或者你想要unit & agency.type的每个组合的一个方面?

如果它只是unit,请尝试:

facet_wrap( ~ unit, ncol=6)

如果是两者,请尝试:

facet_grid(agency.type ~ unit, ncol=6)

仅供参考 - 为了更好地理解如何使用facet_wrap和facet_grid函数,请在此处查看Hadley的文档:

http://had.co.nz/ggplot2/facet_wrap.html