《R数据可视化手册》——3.5 对正负条形图分别着色

简介:

本节书摘来异步社区《R数据可视化手册》一书中的第3章,第3.5节,作者:【美】Winston Chang,更多章节内容可以访问云栖社区“异步社区”公众号查看。

3.5 对正负条形图分别着色

问题
如何根据条形对应的正负取值对其进行分别着色?

方法
下面以climate数据的一个子集为例。首先,创建一个对取值正负情况进行标示的变量pos:

library(gcookbook) #为了使用数据
csub <- subset(climate, Source=="Berkeley" & Year >= 1900)
csub$pos <- csub$Anomaly10y >=0

csub

  Source  Year Anomaly1y Anomaly5y Anomaly10y Unc10y 
 Berkeley  1900    NA    NA   -0.171 0.108 FALSE
 Berkeley  1901    NA    NA   -0.162 0.109 FALSE
 Berkeley  1902    NA    NA   -0.177 0.108 FALSE
 ...
 Berkeley  2002    NA    NA   0.856 0.028 TRUE
 Berkeley  2003    NA    NA   0.869 0.028 TRUE
 Berkeley  2004    NA    NA   0.884 0.029 TRUE

上述过程准备完毕后,将pos映射给填充色参数(fill)并绘制条形图(见图3-11)。注意:这里条形图的参数设定为position="identity",可以避免系统因对负值绘制堆积条形而发出的警告信息。

ggplot(csub, aes(x=Year, y=Anomaly10y, fill=pos))+
   geom_bar(stat="identity", position="identity")```

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

讨论

上面的绘图过程存在一些问题。首先,图形着色效果可能跟我们想要的相反:蓝色是冷色,通常对应于负值;红色是暖色,通常对应于正值。其次,图例显得多余且扰乱视觉。

我们可以通过scale_fill_manual()参数对图形颜色进行调整,设定参数guide=FALSE可以删除图例,如图3-12所示。同时,我们通过设定边框颜色(colour)和边框线宽度(size)为图形填加一个细黑色边框。其中,边框线宽度(size)是用来控制边框线宽度的参数,单位是毫米:

ggplot(csub, aes(x=Year, y=Anomaly10y, fill=pos)) +
  geom_bar(stat="identity", position="identity", colour="black", size=0.25) +
  scale_fill_manual(values=c("#CCEEFF","#FFDDDD"), guide=FALSE)


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

另见
更多关于更改图形颜色的内容可参见12.3节和12.4节。
相关文章
R语言笔记丨绘图基础知识:饼图、条形图
R语言笔记丨绘图基础知识:饼图、条形图
|
8月前
如何用R语言绘制生成正态分布图表
如何用R语言绘制生成正态分布图表
|
8月前
【SPSS】基础图形的绘制(条形图、折线图、饼图、箱图)详细操作过程(上)
【SPSS】基础图形的绘制(条形图、折线图、饼图、箱图)详细操作过程
884 0
|
8月前
【SPSS】基础图形的绘制(条形图、折线图、饼图、箱图)详细操作过程(下)
【SPSS】基础图形的绘制(条形图、折线图、饼图、箱图)详细操作过程
564 0
|
数据可视化
ggballoonplot|气球图-多分类数据可视化
ggballoonplot|气球图-多分类数据可视化
180 0
|
数据采集 数据可视化 数据挖掘
还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
本文讲解9种『炫酷高级』的数据图表,可视化地表示比例或百分比:哑铃图、甜甜圈图、华夫饼图、堆积条形图...附上代码,快快用起来吧!
878 2
还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵