3.1 基本条形图

library(ggplot2)

library(gcookbook)

pg_mean   #这是用到的数据
  group weight
1  ctrl  5.032
2  trt1  4.661
3  trt2  5.526

ggplot(pg_mean, aes(x=group, y=weight)) + geom_bar(stat="identity")

x轴是连续变量还是因子,画出的图有所不同,这里的group是因子。

str(pg_mean) 
'data.frame':   3 obs. of  2 variables:
$ group : Factor w/ 3 levels "ctrl","trt1",..: 1 2 3  #可以看出group是因子
$ weight: num  5.03 4.66 5.53

用fill设置填充色,用color设置边框颜色

ggplot(pg_mean, aes(x=group, y=weight)) + geom_bar(stat="identity", fill="lightblue", color="black")

用我的计步数据试试:

Sys.setenv(JAVA_HOME='C:/Program Files/Java/jdk1.6.0_33/jre')

library(xlsx)

setwd("d:/shenlb/health")

fitbit <- read.xlsx(file="fitbit2014.xlsx", header=TRUE, sheetIndex=1)   #用到JAVA,比read.csv慢了不少

meanMonthStep <- aggregate(fitbit$step, by=list(format(fitbit$date,"%m")), mean)

colnames(meanMonthStep) <- c("month","step") #设置列名

ggplot(meanMonthStep, aes(x=month, y=step)) + geom_bar(stat="identity", fill="lightblue", color="black")

3.2 Grouping Bars Together

cabbage_exp
  Cultivar Date Weight        sd  n         se
1      c39  d16   3.18 0.9566144 10 0.30250803
2      c39  d20   2.80 0.2788867 10 0.08819171
3      c39  d21   2.74 0.9834181 10 0.31098410
4      c52  d16   2.26 0.4452215 10 0.14079141
5      c52  d20   3.11 0.7908505 10 0.25008887
6      c52  d21   1.47 0.2110819 10 0.06674995

条形图的x轴通常是一个分类变量,y轴是连续变量,经常还会提供另一个分类变量,进行分组比较,这里用Cultivar,放在fill属性中(实际上还可以用其它显示样式,但填充色最容易区分不同的可视化对象),用dodge选项使它们互相躲避。

ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar)) + geom_bar(stat="identity", position="dodge")

如果没有用position=”dodge”选项,则是堆叠条形图。

ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar)) + geom_bar(stat="identity")

还可以用其它的调色板进行填充:

ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar)) + 
geom_bar(stat="identity", position="dodge", color="black") +
scale_fill_brewer(palette="Pastel1")

3.3. Making a Bar Graph of Counts

head(diamonds)
  carat       cut color clarity depth table price    x    y    z
1  0.23     Ideal     E     SI2  61.5    55   326 3.95 3.98 2.43
2  0.21   Premium     E     SI1  59.8    61   326 3.89 3.84 2.31
3  0.23      Good     E     VS1  56.9    65   327 4.05 4.07 2.31
4  0.29   Premium     I     VS2  62.4    58   334 4.20 4.23 2.63
5  0.31      Good     J     SI2  63.3    58   335 4.34 4.35 2.75
6  0.24 Very Good     J    VVS2  62.8    57   336 3.94 3.96 2.48

如果只是想按某个分类变量统计出现的个数,则:

ggplot(diamonds, aes(x=cut)) + geom_bar()

它实际上等价于下面的命令:

ggplot(diamonds, aes(x=cut)) + geom_bar(stat="bin")

上面的例子的x轴用的是分类变量,如果用连续变量,则会得到直方图。

ggplot(diamonds, aes(x=price)) + geom_bar(stat="bin")

这时最好用geom_histogram():

ggplot(diamonds, aes(x=price)) + geom_histogram()

3.4. Using Colors in a Bar Graph

把计步数据用指定的颜色填充。这里只有11个月,所以造了11种颜色。

ggplot(meanMonthStep, aes(x=month, y=step, fill=month)) +
geom_bar(stat="identity", color="black") +
scale_fill_manual(values=c("#111111", "#222222", "#333333", "#444444", "#555555", "#666666",
"#777777", "#888888", "#999999", "#AAAAAA", "#BBBBBB"))

如果想移除右侧的图例,用guide=FALSE

ggplot(meanMonthStep, aes(x=month, y=step, fill=month)) +
geom_bar(stat="identity", color="black") +
scale_fill_manual(values=c("#111111", "#222222", "#333333", "#444444", "#555555", "#666666",
"#777777", "#888888", "#999999", "#AAAAAA", "#BBBBBB"), guide=FALSE)

加文本标签

ggplot(meanMonthStep, aes(x=month, y=step)) +
geom_bar(stat="identity", fill="lightblue", color="black") +
geom_text(aes(label=floor(step)), vjust=-0.2)

R Graphics Cookbook 第3章 – Bar Graphs的更多相关文章

  1. 图表|Line graphs|Bar graphs|Pie graphs|Scatter graphs|标目|标值|图解|图题|标值|

    科研论文写作-图表 图像的特点是直观性高效,可用于描述非线性关系,将文字难以描述的内容表达出来. Line graphs中有自变量和因变量,用于表示变化趋势.为了清晰简洁和易于辨认,所以其中的线条最好 ...

  2. R自动数据收集第二章HTML笔记1(主要关于handler处理器函数和帮助文档所有示例)

    本文知识点:     1潜在畸形页面使用htmlTreeParse函数 2startElement的用法 3闭包 4handler函数的命令和函数体主要写法 5节点的丢弃,取出,取出标签名称.属性.属 ...

  3. R入门<三>-R语言实战第4章基本数据管理摘要

    入门书籍:R语言实战 进度:1-4章 摘要: 1)实用的包 forecast:用于做时间序列预测的,有auto.arima函数 RODBC:可以用来读取excel文件.但据说R对csv格式适应更加良好 ...

  4. iOS编程Cookbook第19章最后一个例子不能正常工作的解决办法

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 在Cookbook的第19章的11节中所要解决的是在App中显 ...

  5. R自动数据收集第二章HTML笔记2(主要关于htmlTreeParse函数)

    包含以下几个小的知识点 1htmlTreeParse函数源码和一些参数 2hander的写法 3关于missing函数 4关于if-else语句中else语句的花括号问题 5关于checkHandle ...

  6. R自动数据收集第一章概述——《List of World Heritage in Danger》

      导包     library(stringr) library(XML) library(maps) heritage_parsed <- htmlParse("http://en ...

  7. Java 7 Concurrency Cookbook 翻译 第一章 线程管理之六

    十一.处理线程组中的未控制异常 每种编程语言一个很重要的特性就是其所提供的用来处理程序中错误情况的机制.Java语言和其他的现代语言一样,是提供了异常机制来处理对象程序中的错误.Java提供了很多的类 ...

  8. Java 7 Concurrency Cookbook 翻译 第一章 线程管理之一

    一.简介 在计算机的世界里,当我们谈论并发时,我们指的是一系列的任务同时运行于一个计算机中.这里说的同时运行,在计算机拥有多于一个处理器或者是一个多核处理器的时候才是真正的同时,在计算机只拥有单核处理 ...

  9. CSS For Bar Graphs(maybe old)

    Having a working knowledge of XHTML and CSS when developing applications is a big help in knowing wh ...

随机推荐

  1. 【cs229-Lecture18】线性二次型调节控制

    本节内容: 控制MDP的算法: 状态行动奖励: 非线性动力学系统: 模型: LQR:线性二次型调节控制:(Riccati方程)

  2. SSH: 本地.ssh目录下的公钥文件最好删掉

    这次ssh amazon ec2的instance,在家里电脑登录OK,到了公司电脑登录失败(只支持公钥机制).私钥已经拷贝到公司的ubuntu上了,奇怪. 后来发现是.ssh目录下存在一些公钥文件导 ...

  3. `cocos2dx非完整`开篇

    相信每个人都有一些自己的项目开发习惯,在·开篇·中我主要是会提到一些项目的配置问题.无论做一款什么样的手游项目,我们总是会从需求的角度出发去选择开发引擎,开发工具等一些列的工具去完善我们的开发环境.当 ...

  4. Python--matplotlib绘图可视化知识点整理

    from:https://segmentfault.com/a/1190000005104723 本文作为学习过程中对matplotlib一些常用知识点的整理,方便查找. 强烈推荐ipython无论你 ...

  5. Python 之 MySQL 操作库 lazy_mysql

    TOC Intro Installation Tutorial API Engine Pool Column Table Intro lazy_mysql 是一个非常简单易用,用来操作 MySQL 的 ...

  6. IIS限制ip访问

    1.禁止IP访问 http://jingyan.baidu.com/article/22fe7ced0462633002617f39.html 2.限制IP访问频率 http://q.cnblogs. ...

  7. 红黑树(四)之 C++的实现

    概要 前面分别介绍红黑树的理论知识和红黑树的C语言实现.本章是红黑树的C++实现,若读者对红黑树的理论知识不熟悉,建立先学习红黑树的理论知识,再来学习本章. 目录1. 红黑树的介绍2. 红黑树的C++ ...

  8. IP地址查询API的C#实现

    一切从登录记录开始 看到TX的登录记录之后,突然想去在登录环节也加上这个功能,然后就写了下面的具体实现代码.现在一点也不纠结IP在数据库中保存类型是UNSIGNED INT还是VARCHAR了. 干货 ...

  9. SQL Server技术问题之索引优缺点

    索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息. 优点: 正确的索引会大大提高数据查询.对结果排序.分组的操作效率. 缺点: 1.存储空间,每个索引都要空间 ...

  10. 循序渐进开发WinForm项目(4)--Winform界面模块的集成使用

    随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到C#开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教程或者视频来学习就好了. 其实也许我 ...