R Graphics Cookbook 第3章 – Bar Graphs

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)

时间: 2024-11-10 13:21:31

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

MySQL cookbook第10章读书笔记

1,使用load data和mysqlimport导入数据 1个ok,2个warning!!! 为什么会有warning,而且数据也没有load进去 2,指定数据文件位置 了解MySQL查找文件位置的规则. 如果load data语句没有local选项,MySQL读取数据文件将按下述规则在服务器所在机器上定位文件的位置: 文件的绝对全路径名(从文件系统的根开始),MySQL直接读取该文件. 给定的是文件的相对路径名,按照路径名的两种不同形式来解释和处理. 3,指定数据文件的结构 有一个数据文件但

MySQL Cookbook第11章读书笔记

1,创建一个序列列兵生成序列值 使用auto_increment 如果显式地把ID设置成一个非NULL的值,有两个结果: a,这个值在表中出现,由于id列是主键,因而不允许重复,故会出现错误 b,这个值没有出现例如,你的表中id序列值为1到8,此时你插入一个新航,并设置为20,那么下一个自动产生的序列就会从21开始,而9-19的值变得不可用. 2,序列生成的行删除的效果 例如在insect表中: 比如要求只能是昆虫,删除millipede,millbug,多余的蚂蚁 删除2会给序列中间带来一个缺

R入门&lt;三&gt;-R语言实战第4章基本数据管理摘要

入门书籍:R语言实战 进度:1-4章 摘要: 1)实用的包 forecast:用于做时间序列预测的,有auto.arima函数 RODBC:可以用来读取excel文件.但据说R对csv格式适应更加良好,相应的导入导出均较为方便(read.table, write等) reshape:目前用到rename函数,可以方便的对数据变量重命名 fCalendar:在日期输入处提及,据说对日期运算有奇效,但无具体示例.同理如lubridate sqldf:在数据选取处提及,可代替subset以及各种whe

R 学习笔记《五》 R语言初学者指南--第二章总结

第二章学习了的R函数: 1 sum                     计算和 sum(x,na.rm=TRUE)  计算向量x中所有数的和,其中排除了NA元素 2 median                 计算中位数           返回一个样本数据中间的那个数  median(x,na.rm=TRUE) 3 max                    计算最大值            max(x,na.rm=TRUE) 4 min                    计算最小

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

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 在Cookbook的第19章的11节中所要解决的是在App中显示iOS自带的日历编辑视图的问题. 例子代码是选择迄今为止1年前的第一个找到的日历事件,然后将其显示在日历编辑视图中. 日历编辑视图控制器是EKEventEditViewController的实例对象,按照书上的说明,其有一个event实例变量,如果在显示该控制器之前不对其赋值,即其值为nil则出现

《数据挖掘:R语言实战》第二章 数据概览

2.1 n*m数据集 在n*m表格形式的数据集中,n代表数据的行,即观测点的数量:m代表列,即变量的数量:n*m为数据的维度. 一般来说,当拿到一份数据时,最先做的往往就是查看数据集的观测样本数.变量数,以及这些变量的实际含义,以此对数据集的庞大程度和各变量的相对重要性做到心中有数.这对选取何种数据挖掘算法,以及在这之前应该抽取多少及哪些变量及样本纳入建模都有重要的先导作用. 2.2 数据的分类 2.2.1 一般的数据分类 定量数据:连续型数据和离散型数据 定性数据:定类数据.定序数据.定距数据

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

包含以下几个小的知识点 1htmlTreeParse函数源码和一些参数 2hander的写法 3关于missing函数 4关于if-else语句中else语句的花括号问题 5关于checkHandlerNames函数 6关于GeneralHandlerNames属性 7关于match函数 8关于inherits函数 9关于on.exit函数 ==============================================================================

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

一.简介 在计算机的世界里,当我们谈论并发时,我们指的是一系列的任务同时运行于一个计算机中.这里说的同时运行,在计算机拥有多于一个处理器或者是一个多核处理器的时候才是真正的同时,在计算机只拥有单核处理器的时候,它指的是表面上的同时运行. 所有的现代操作系统都允许并发任务的执行.在听歌和阅读网页上新闻的同时,你还能阅读电子邮件.我们可以说这种类型的并发是进程级别的并发.但在一个进程内部,我们也可以拥有多个同时运行的任务.那些运行在一个进程中的并发任务被称作线程. 与并发相关的另一个概念是并行.它与

MySQL cookbook第8章读书笔记

1,使用count函数生成摘要 函数函数使用很容易,对于MyISAM表来说count(*)语句很快,但是对于BDB或者InnoDB表来说,尽可能要避免使用它,因为该语句要求执行完整的扫描,速度很慢,解决办法是从information_schema数据库中提取table_rows数目 与if语句搭配使用: 创建视图来简化使用摘要(经常使用摘要的时候): 使用视图: 使用min(),max()也是类似的: 类似的还有sum()和avg()函数生成摘要: 2,使用distinct函数消除重复 3,查找