美文网首页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