柱状图1之简单柱状图

要点

  • 根据具体情况调整长宽比
  • 最好柱子高度按照降序排列
  • 所有柱子应该是同一种颜色(可以特殊颜色标记某几个焦点柱子)
  • 如果柱子是左对齐的(横柱子)则其轴标签需要右对齐,以减少视觉空白区域
  • 轴标签字体大小与柱子的宽度对应
  • 需要标注特殊柱子时,可以使用不同颜色区分,也可以同时对其轴标签使用加粗字体(使用的字体多于两种cut,不仅仅只有regular和bold,如Lato字体有light、black等5个不同粗细的选择)
  • 添加一条参考线(如平均值等)
  • 背景分块可以快速定位柱子高度(也可以添加网格线)
  • 如果数据是百分数,则不必每个数值后面都加上百分号,只需在某个合适位置备注一下“all values in percent”即可

实例1

效果图:


bar1.png

在网站http://www.latofonts.com/上下载Lato字体并安装(复制到C:\Windows\Fonts\目录下即可)

绘图代码:

pdf_file <- "barcharts_simple.pdf"
cairo_pdf(bg = "grey98", pdf_file, width = 9, height = 6.5)

par(omi = c(0.65, 0.25, 0.75, 0.75), mai = c(0.3, 2, 0.35, 0), 
    mgp = c(3, 3, 0), family = "Lato Light", las = 1)

# 导入数据
# library(gdata)
# ipsos <- read.xls("myData/ipsos.xlsx", encoding = "latin1")
load(url("https://github.com/x2yline/Rdata/raw/master/data%20visualization%20R/6_1_ipsos.RDATA"))

sort.ipsos <- ipsos[order(ipsos$Percent), ]
attach(sort.ipsos)
# Create chart
x <- barplot(Percent, names.arg = F, horiz = T, border = NA, 
    xlim = c(0, 100), col = "grey", cex.names = 0.85, axes = F)
# Label chart
for (i in 1:length(Country)) {
    if (Country[i] %in% c("Germany", "Brazil")) {
        myFont <- "Lato Black"
    } else {
        myFont <- "Lato Light"
    }
    text(-8, x[i], Country[i], xpd = T, adj = 1, cex = 0.85, 
        family = myFont)
    text(-3.5, x[i], Percent[i], xpd = T, adj = 1, cex = 0.85, 
        family = myFont)
}
# Other elements
rect(0, -0.5, 20, 28, col = rgb(191, 239, 255, 80, maxColorValue = 255), 
    border = NA)
rect(20, -0.5, 40, 28, col = rgb(191, 239, 255, 120, maxColorValue = 255), 
    border = NA)
rect(40, -0.5, 60, 28, col = rgb(191, 239, 255, 80, maxColorValue = 255), 
    border = NA)
rect(60, -0.5, 80, 28, col = rgb(191, 239, 255, 120, maxColorValue = 255), 
    border = NA)
rect(80, -0.5, 100, 28, col = rgb(191, 239, 255, 80, maxColorValue = 255), 
    border = NA)
myValue2 <- c(0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 
    0)
myColour2 <- rgb(255, 0, 210, maxColorValue = 255)
x2 <- barplot(myValue2, names.arg = F, horiz = T, border = NA, 
    xlim = c(0, 100), col = myColour2, cex.names = 0.85, axes = F, 
    add = T)
arrows(45, -0.5, 45, 20.5, lwd = 1.5, length = 0, xpd = T, col = "skyblue3")
arrows(45, -0.5, 45, -0.75, lwd = 3, length = 0, xpd = T)
arrows(45, 20.5, 45, 20.75, lwd = 3, length = 0, xpd = T)
text(41, 20.5, "Average", adj = 1, xpd = T, cex = 0.65, font = 3)
text(44, 20.5, "45", adj = 1, xpd = T, cex = 0.65, family = "Lato", 
    font = 4)
text(100, 20.5, "All values in percent", adj = 1, xpd = T, cex = 0.65, 
    font = 3)
mtext(c(0, 20, 40, 60, 80, 100), at = c(0, 20, 40, 60, 80, 100), 
    1, line = 0, cex = 0.8)
# Titling
mtext("'I Definitely Believe in God or a Supreme Being'", 3, 
    line = 1.3, adj = 0, cex = 1.2, family = "Lato Black", outer = T)
mtext("was said in 2010 in:", 3, line = -0.4, adj = 0, cex = 0.9, 
    outer = T)
mtext("Source: www.ipsos-na.com, Design: Stefan Fichtel, ixtract", 
    1, line = 1, adj = 1, cex = 0.65, outer = T, font = 3)
dev.off()

注:
如果不使用cairo_pdf输出图形而使用默认窗口则会有字体报错(因为windows默认窗口不支持字体嵌入)
不使用一次性上色方案是为了避免背景色把需要特殊标记的柱子挡住(有绘制的先后问题)

代码和资料来自http://www.springer.com/us/book/9783319497501

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容