《R数据可视化手册》——3.1 绘制简单条形图

3.2 绘制簇状条形图

问题
如何绘制基于某个分类变量的簇状条形图?

方法
将分类变量映射到fill参数,并运行命令geom_bar(position="dodge")。

下面以cabbage_exp数据集为例演示一下绘图过程,cabbage_exp数据集包含两个分类变量Cultivar和Date及一个连续型变量Weight。

library(gcookbook) #为了使用数据
cabbage_exp

 Cultivar Date Weight
    c39 d16 3.18
    c39 d20 2.80
    c39 d21 2.74
    c52 d16 2.26
    c52 d20 3.11
    c52 d21 1.47
.```
我们分别将Date和Cultivar映射给x和fill(见图3-4)。
<div style="text-align: center"><img src="https://yqfile.alicdn.com/6a93cf3d614ea4ae6208603da1471bd212fb8e03.png" width="" height="">
</div>

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

讨论
最简单的条形图通常只对应一个绘制在x轴上的分类变量和一个绘制在y轴上的连续型变量。有时候,我们想额外添加一个分类变量跟x轴上的分类变量一起对数据进行分组。此时,可通过将该分类变量映射给fill参数来绘制簇状条形图,这里的fill参数用来指定条形的填充色。在这一过程中必须令参数position="dodge"以使得两组条形在水平方向上错开排列,否则,系统会输出堆积条形图(参见3.7节)。

与映射给条形图x轴的变量类似,映射给条形填充色参数的变量应该是分类变量而不是连续型变量。

我们可以通过将geom_bar()中的参数指定为colour="black"为条形添加黑色边框线;可以通过scale_fill_brewer()或者scale_fill_manual()函数对图形颜色进行设置。在图3-5中,我们使用RColorBrewer包中的Pastel1调色盘对图形进行调色。
<div style="text-align: center"><img src="https://yqfile.alicdn.com/710bac6e9339a90548c65845849b815d030f8f91.png" width="" height="">
</div>

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

其他图形属性诸如颜色colour(指定条形图的边框线颜色)和线型(linestyle)也能用来对变量进行分组,不过,填充色(fill)也许是最合人心意的图形属性。

注意,如果分类变量各水平的组合中有缺失项,那么,绘图结果中的条形则相应地略去不绘,同时,临近的条形将自动扩充到相应位置。删去上例数据中的最后一行后,可得到图3-6。

ce <- cabbage_exp[1:5,] #复制删除了最后一行的数据集
ce

Cultivar Date Weight
   c39 d16 3.18
   c39 d20 2.80
   c39 d21 2.74
   c52 d16 2.26
    c52 d20 3.11
  
ggplot(ce, aes(x=Date, y=Weight, fill=Cultivar)) +
  geom_bar(position="dodge",stat="identity", colour="black") +
  scale_fill_brewer(palette="Pastel1")


<div style="text-align: center"><img src="https://yqfile.alicdn.com/761068f8ba57d35780ff58eb82b2f8baddf890ee.png" width="" height="">
</div>

如果你的数据与上面类似,那么,你可以在分类变量组合缺失的那一项为变量y手动输入一个NA值。

另见
更多关于条形图着色的内容,可参见3.4节。
时间: 2025-01-24 01:37:24

《R数据可视化手册》——3.1 绘制简单条形图的相关文章

《R数据可视化手册》——3.4 条形图着色

3.4 条形图着色 问题如何将条形图中的条形设定为不同的颜色? 方法将合适的变量映射到填充色(fill)上即可. 这里以数据集uspopchange为例.该数据集描述了美国各州人口自2000年到2010年的变化情况.我们选取出人口增长最快的十个州进行绘图.图中会根据地区信息(东北部.南部.中北部.西部)对条形进行着色. 首先,选取出人口增长最快的十个州: library(gcookbook) #为了使用数据 upc <- subset(uspopchange, rank(Change)>40)

《R数据可视化手册》一第3章 条形图3.1 绘制简单条形图

第3章 条形图 R数据可视化手册 条形图也许是最常用的数据可视化方法,通常用来展示不同的分类下(在x轴上)某个数值型变量的取值(在y轴上).例如,条形图可以用来形象地展示四种不同商品的价格情况,但不适宜用来展示商品价格随时间的变动趋势,因为这里时间是一个连续变量--尽管我们也可以这么做,后面会看到这种情形. 绘制条形图时需特别注意一个重要的细节:有时条形图的条形高度表示的是数据集中变量的频数,有时则表示变量取值本身.牢记这个区别--这里极易混淆,因为两者与数据集的对应关系不同,但又对应同样的术语

《R数据可视化手册》一第2章 快速探索数据2.1 绘制散点图

第2章 快速探索数据 R数据可视化手册虽然本书中大部分图形都是通过ggplot2包绘制的,但这并不是R绘制图形的唯一方法.要快速探索数据,有时使用R基础包中的绘图函数会很有用.这些函数随R软件默认安装,无需另行安装附加包.它们简短易输入,处理简单问题时使用方便,且运行速度极快. 如果你想绘制较为复杂的图形,那么,转用ggplot2包通常是更好的选择.部分原因在于ggplot2提供了一个统一的接口和若干选项来替代基础绘图系统中对图形的修修补补和各种特例.一旦掌握了ggplot2的工作机制,你就可以

《R数据可视化手册》——第2章 快速探索数据

第2章 快速探索数据 R数据可视化手册虽然本书中大部分图形都是通过ggplot2包绘制的,但这并不是R绘制图形的唯一方法.要快速探索数据,有时使用R基础包中的绘图函数会很有用.这些函数随R软件默认安装,无需另行安装附加包.它们简短易输入,处理简单问题时使用方便,且运行速度极快. 如果你想绘制较为复杂的图形,那么,转用ggplot2包通常是更好的选择.部分原因在于ggplot2提供了一个统一的接口和若干选项来替代基础绘图系统中对图形的修修补补和各种特例.一旦掌握了ggplot2的工作机制,你就可以

《R数据可视化手册》一导读

前 言 R数据可视化手册几年前读研时我开始用R,主要用来分析我在科研工作中收集到的数据.我使用R首先是想摆脱SPSS这样的统计软件的禁锢,即严格的环境和死板的分析.更何况,R是免费的,所以我用不着说服别人为我购买一套这样的软件--这对一个穷研究生来说是相当的重要!此后,随着我对R的了解不断深入,我才发现原来R还可以绘制出非常优秀.动人的数据图形. 本书的每个"技巧"中,都列出了一个问题和对应的解决方法.在大多数情况下,我提供的并不是R中唯一的实现方法,但却是我认为的最佳方案.R如此受欢

《R数据可视化手册》——导读

前言 R数据可视化手册几年前读研时我开始用R,主要用来分析我在科研工作中收集到的数据.我使用R首先是想摆脱SPSS这样的统计软件的禁锢,即严格的环境和死板的分析.更何况,R是免费的,所以我用不着说服别人为我购买一套这样的软件--这对一个穷研究生来说是相当的重要!此后,随着我对R的了解不断深入,我才发现原来R还可以绘制出非常优秀.动人的数据图形. 本书的每个"技巧"中,都列出了一个问题和对应的解决方法.在大多数情况下,我提供的并不是R中唯一的实现方法,但却是我认为的最佳方案.R如此受欢迎

《R数据可视化手册》——第3章 条形图

第3章 条形图 R数据可视化手册条形图也许是最常用的数据可视化方法,通常用来展示不同的分类下(在x轴上)某个数值型变量的取值(在y轴上).例如,条形图可以用来形象地展示四种不同商品的价格情况,但不适宜用来展示商品价格随时间的变动趋势,因为这里时间是一个连续变量--尽管我们也可以这么做,后面会看到这种情形. 绘制条形图时需特别注意一个重要的细节:有时条形图的条形高度表示的是数据集中变量的频数,有时则表示变量取值本身.牢记这个区别--这里极易混淆,因为两者与数据集的对应关系不同,但又对应同样的术语.

《R数据可视化手册》一第1章 R基础1.1 安装包

第1章 R基础 R数据可视化手册本章包括以下基础知识:安装包.使用包和加载数据. 如果你想快速上手,本书大多数技巧都需要安装ggplot2和gcookbook包.运行下面命令来安装: install.packages(c("ggplot2", "gcookbook"))然后,在每个R会话中,你需要在运行本书的例子之前先加载它们: library(ggplot2)library(gcookbook)附录A提供了一个关于ggplot2绘图包的简介,主要是面向不熟悉ggp

《R数据可视化手册》——第1章 R基础

第1章 R基础 R数据可视化手册本章包括以下基础知识:安装包.使用包和加载数据. 如果你想快速上手,本书大多数技巧都需要安装ggplot2和gcookbook包.运行下面命令来安装: install.packages(c("ggplot2", "gcookbook"))``` 然后,在每个R会话中,你需要在运行本书的例子之前先加载它们: library(ggplot2)library(gcookbook)`附录A提供了一个关于ggplot2绘图包的简介,主要是面向不

《R数据可视化手册》——2.3 绘制条形图

2.3 绘制条形图 问题如何绘制条形图? 方法对变量的值绘制条形图(见图2-5左图),可以使用barplot()函数,并向其传递两个向量作为参数,第一个向量用来设定条形的高度,第二个向量用来设定每个条形对应的标签(可选). 如果向量中的元素已被命名,则系统会自动使用元素的名字作为条形标签: barplot(BOD$demand, names.arg=BOD$Time)``` 有时候,"条形图"表示的是分组数据中各个元素的频数(见图2-5右图).这种条形图跟直方图有些类似,不过,其用离散