美文网首页R语言基础包作图R语言做生信
柱状图5之多分类变量多面板图

柱状图5之多分类变量多面板图

作者: x2yline | 来源:发表于2017-12-08 21:22 被阅读20次

    要点

    • 通过layout设置图形位置,再分别绘制图形
    barcharts_multiple_all_panel
    # 定义标签名称
    myC_v159 <- "A working mother can establish just as warm and\nsecure an environment as a non-working mother"
    myC_v160 <- "A pre-school child is likely to suffer if\nhis or her mother is working"
    myC_v161 <- "A job is alright, but what most women\nreally want is a home and children"
    myC_v162 <- "Being a housewife is just as fulfilling as\nworking"
    myC_v163 <- "Having a job is the best way for a woman\nto be independent"
    myC_v164 <- "Both the husband and wife should contribute\nto the family income"
    myC_v165 <- "In general, fathers are as well suited to\nlook after their children as women"
    myC_v166 <- "Men should take as much responsibility\nas women for their household and children"
    mynames <- c(myC_v165, myC_v164, myC_v163, myC_v162, myC_v161, 
        myC_v160, myC_v159)
    myresponses <- c("n.a./don’t know", "agree strongly", "agree", 
        "disagree", "disagree strongly")
      
    pdf_file<-'barcharts_multiple_all_panel.pdf'
    cairo_pdf(bg='grey98', pdf_file, width=13,height=10.5)
    add_fonts("lato")
    par(omi = c(1.25, 1.25, 1.25, 0.25), lheight = 1.15, family = "Lato Light", 
        las = 1)
    library(RColorBrewer)
    
    # 设置图形的摆放位置
    layout(matrix(data = c(1, 2, 3, 4, 5), nrow = 1, ncol = 5), widths = c(2.5, 
        1, 1, 1, 1), heights = c(1, 1))
    
    # 构造数据
    col_1 <- c(2, 5, 3, 6, 2, 7, 8)
    col_2 <- c(20, 15, 14, 15, 12, 30, 10)
    col_3 <- c(30, 20, 10, 13, 26, 32, 20)
    col_4 <- c(20, 34, 30, 25, 30, 20, 16)
    col_5 <- rep(100, 7) - col_1 - col_2 - col_3 - col_4
    z <- cbind(col_1, col_2, col_3, col_4, col_5)
    myData0 <- cbind(z[, 1], z[, 2], z[, 3], z[, 4], z[, 5])
    myData1 <- t(myData0)
    tmyData <- myData0
    myC1 <- rgb(0, 208, 226, maxColorValue = 255)
    myC2 <- rgb(109, 221, 225, maxColorValue = 255)
    myC3 <- rgb(255, 138, 238, maxColorValue = 255)
    myC4 <- rgb(255, 0, 210, maxColorValue = 255)
    colours <- c("grey", myC1, myC2, myC3, myC4)
    
    for (i in 1:5) {
        if (i == 1) {
            par(mai = c(0.25, 2.75, 0.25, 0.15))
            bp1 <- barplot(tmyData[, i], horiz = T, cex.names = 1.6, 
                names.arg = mynames, xlim = c(0, 50), col = colours[i], 
                border = NA, axes = F)
        } else {
            par(mai = c(0.25, 0.1, 0.25, 0.15))
            bp2 <- barplot(tmyData[, i], horiz = T, axisnames = F, 
                xlim = c(0, 50), col = colours[i], border = NA, axes = F)
        }
        rect(0, 0, 10, 8.5, col = rgb(191, 239, 255, 80, maxColorValue = 255), 
            border = NA)
        rect(10, 0, 20, 8.5, col = rgb(191, 239, 255, 120, maxColorValue = 255), 
            border = NA)
        rect(20, 0, 30, 8.5, col = rgb(191, 239, 255, 80, maxColorValue = 255), 
            border = NA)
        rect(30, 0, 40, 8.5, col = rgb(191, 239, 255, 120, maxColorValue = 255), 
            border = NA)
        rect(40, 0, 50, 8.5, col = rgb(191, 239, 255, 80, maxColorValue = 255), 
            border = NA)
        mtext(myresponses[i], 3, adj = 0, line = 0, cex = 0.95, font = 3)
        mtext(c(10, 20, 30, 40, 50), at = c(10, 20, 30, 40, 50), 
            1, line = 1, cex = 0.85)
        mtext(0, at = 0, 1, line = 1, cex = 0.9, family = "Lato Bold")
        arrows(0, -0.1, 0, 8.6, lwd = 2.5, length = 0, xpd = T, col = "skyblue3")
    }
    
    # 标题
    mtext("It is often said that attitudes towards gender roles are changing", 
        3, line = 3.5, adj = 1, cex = 1.8, family = "Lato Black", 
        outer = T)
    mtext("N=2,075", 1, line = 3, adj = 0.25, cex = 1.1, family = "Lato", 
        font = 4, outer = T)
    mtext("All values in percent", 1, line = 3, adj = 1, cex = 1.1, 
        font = 3, outer = T)
    mtext("Source: European Values Study 2008 Germany, ZA4753. www.gesis.org. Design: Stefan Fichtel, ixtract", 
        1, line = 5.5, adj = 1, cex = 0.95, outer = T)
    dev.off()
    

    相关文章

      网友评论

      • 视界有你:pdf_file<-'barcharts_multiple_all_panel.pdf'这啥意思?
        x2yline:@视界有你 这个是设置下一步输出的pdf文件名字

      本文标题:柱状图5之多分类变量多面板图

      本文链接:https://www.haomeiwen.com/subject/ajpnbxtx.html