柱状图3之多分类变量的百分条图

要点:

  • 用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)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile丽语阅读 3,871评论 0 6
  • TaoYan 简介 本文将绘制静态与交互式热图,需要使用到以下R包和函数:heatmap():用于绘制简单热图的函...
    taoyan阅读 47,740评论 4 129
  • 本章内容 条形图、箱线图和点图饼图和扇形图直方图与核密度图 6.1条形图(Simple Bar Plot简单条形图...
    白马少年说阅读 14,284评论 5 11
  • 第二次见面为时两天。 十四号一早我就去火车站接了菜先生,当然还拿了爱心早餐哦^_^ 由于当天下午我还有个面试,所以...
    芒果爱吃西米露阅读 297评论 0 0
  • 还是自私,做不了好人。 还是把所有的话记录下来 咽回来 还是要做个好人
    素伞阅读 146评论 0 0