要点:
- 用point和text手动添加图例
- barplot参数height为矩阵时,如果beside参数值为FALSE则堆积排列,否则分组排列,names.arg指定轴标签
barcharts_multiple_all
pdf_file <- "barcharts_multiple_all.pdf"
cairo_pdf(bg = "grey98", pdf_file, width = 13, height = 10.5)
# 定义标签名称
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")
# add_fonts('lato')
par(omi = c(0, 0.75, 1.25, 0.75), mai = c(1.6, 3.75, 0.5, 0),
lheight = 1.15, family = "Lato Light", las = 1)
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)
mycolours <- c("grey", myC1, myC2, myC3, myC4)
# 构造数据
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)
# barplot参数height为矩阵时,如果beside参数值为FALSE则堆积排列,否则分组排列
# names.arg指定轴标签
x <- barplot(myData1, names.arg = mynames, cex.names = 1.1, horiz = T,
border = NA, xlim = c(0, 100), col = mycolours, axes = F,
beside = F)
# 添加图例
px <- c(2, 8, 35, 68, 98)
py <- rep(9, 5)
tx <- c(-2, 23, 43, 65, 95)
ty <- rep(9, 5)
points(px, py, pch = 15, cex = 4, col = mycolours, xpd = T)
text(tx, ty, myresponses, adj = 1, xpd = T, family = "Lato Light",
font = 3)
# 添加x轴标签
mtext(c(0, 20, 40, 60, 80, 100), at = c(0, 20, 40, 60, 80, 100),
1, line = 0, cex = 0.9)
# Titling
mtext("It is often said that attitudes towards gender roles are changing",
side = 3, line = 2.2, adj = 0, cex = 1.8, outer = T, family = "Lato Black")
mtext("All values in percent", 1, line = 2, adj = 1, cex = 0.95,
font = 3)
mtext("Source: European Values Study 2008 Germany, ZA4753. www.gesis.org. Design: Stefan Fichtel, ixtract",
side = 1, line = 4.5, adj = 1, cex = 0.95, font = 3)
mtext("N=2,075", 1, line = 2, adj = 0, cex = 1.15, family = "Lato Regular",
font = 3)