《R数据可视化手册》——3.6 调整条形宽度和条形间距

简介:

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

3.6 调整条形宽度和条形间距

问题
如何调整条形图的条形宽度和条形间距?

方法
通过设定geom_bar()函数的参数width可以使条形变得更宽或者更窄。该参数的默认值为0.9;更大的值将使绘制的条形更宽,反之则是更窄(见图3-13)。

例如,标准宽度的条形图如下:

library(gcookbook) #为了使用数据

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

fbe01fd3ca8a431dd2dccf75693162750427348a

窄些的条形图:

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

宽些的条形图(条形图的最大宽度为1):

ggplot(pg_mean, aes(x=group, y=weight)) + geom_bar(stat="identity", width=1)`
簇状条形图默认组内的条形间距为0。如果希望增加组内条形的间距,则可以通过将width设定得小一些,并令position_dodge的取值大于width(见图3-14)。

ad42b4fabcfacec1833025f634e9987dee48b91b

.
更窄的簇状条形图可运行:
ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar)) +
  geom_bar(stat="identity", width=0.5, position="dodge")```
添加条形组距可运行:

ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar)) +
  geom_bar(stat="identity", width=0.5, position=position_dodge(0.7))`
第一幅图的绘图命令中用到了参数position="dodge",第二幅图的绘图命令中用到的参数是position=position_dodge()。这是因为position="dodge"是参数默认为0.9的position_dodge()的简写。当我们需要单独指定该参数的时候,必须输入完整的命令。

讨论
width参数的默认值是0.9,position_dodge函数中width参数的默认值也是0.9。更确切地说,position_dodge函数和geom_bar()函数中的width参数的取值是一样的。

下面的四个命令是等价的:

geom_bar(position="dodge")
geom_bar(width=0.9, position=position_dodge())
geom_bar(position=position_dodge(0.9))
geom_bar(width=0.9, position=position_dodge(width=0.9))```
条形图中,条形中心对应的x轴坐标分别是1、2、3等,但通常我们不会利用上这些数值。当用户运行命令geom_bar(width=0.9)时,每组条形将在x轴上占据0.9个单位宽度。运行命令position_dodge(width=0.9)时,ggplot2会自动调整条形位置,以使每个条形的中心恰好位于当每组条形宽度为0.9,且组内条形紧贴在一起时的位置,如图3-15所示。图中上下两部分都对应position_dodge(width=0.9),只是上图对应于0.9的条形宽度,下图对应于0.2的条形宽度。虽然上下两部分对应的条形宽度不同,但两图的条形中心是上下对齐的。
<div style="text-align: center"><img src="https://yqfile.alicdn.com/8e13ba95f460a64da6d8a340f29a4ba86c3ca651.png" width="" height="">
</div>
相关文章
|
机器学习/深度学习 传感器 算法
数字图像处理实验(五)|图像复原{逆滤波和伪逆滤波、维纳滤波deconvwnr、大气湍流扰动模型、运动模糊处理fspecial}(附matlab实验代码和截图)
数字图像处理实验(五)|图像复原{逆滤波和伪逆滤波、维纳滤波deconvwnr、大气湍流扰动模型、运动模糊处理fspecial}(附matlab实验代码和截图)
1596 0
数字图像处理实验(五)|图像复原{逆滤波和伪逆滤波、维纳滤波deconvwnr、大气湍流扰动模型、运动模糊处理fspecial}(附matlab实验代码和截图)
|
机器学习/深度学习 存储 监控
Elasticsearch 在日志分析中的应用
【9月更文第2天】随着数字化转型的推进,日志数据的重要性日益凸显。日志不仅记录了系统的运行状态,还提供了宝贵的洞察,帮助企业改进产品质量、优化用户体验以及加强安全防护。Elasticsearch 作为一个分布式搜索和分析引擎,因其出色的性能和灵活性,成为了日志分析领域的首选工具之一。本文将探讨如何使用 Elasticsearch 作为日志分析平台的核心组件,并详细介绍 ELK(Elasticsearch, Logstash, Kibana)栈的搭建和配置流程。
859 4
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
734 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
11月前
|
运维 安全 Cloud Native
阿里云云安全中心全面解析
阿里云云安全中心作为一款集持续监测、深度防御、全面分析、快速响应能力于一体的云上安全管理平台,为企业提供了全方位的安全保障。本文将详细介绍阿里云云安全中心的功能、应用场景、收费标准以及购买建议,帮助您更好地了解和利用这一强大的安全工具。
阿里云云安全中心全面解析
|
存储 Prometheus 监控
Prometheus 的扩展与集成
【8月更文第29天】Prometheus 是一款非常强大的监控系统,它不仅能够采集和存储时间序列数据,还提供了丰富的生态系统来扩展其功能。本文将介绍如何通过自定义 Exporters 和集成中间件(如 Thanos)来扩展 Prometheus 的能力。
408 1
|
安全 网络协议 Linux
在CentOS 7上安装和使用Webmin的方法
在CentOS 7上安装和使用Webmin的方法
316 0
|
SQL 运维 关系型数据库
MySQL 运维篇
该文本涵盖了数据库管理的关键方面,包括DDL(CREATE, DROP, ALTER等)用于定义数据库结构,DML(INSERT, DELETE, UPDATE, SELECT)用于数据操作,DCL(GRANT, REVOKE, COMMIT, ROLLBACK)涉及权限管理和事务控制,以及DQL用于数据查询。还介绍了MySQL的安装过程,包括源码编译和二进制安装方法,以及启动服务、设置初始密码和修改用户密码的步骤。
283 1
|
机器学习/深度学习 缓存 自然语言处理
从头开始构建 Transformer: 注意力机制
从头开始构建 Transformer: 注意力机制
|
存储 Linux
scRNA分析|多样本merge 和 harmony去批次
scRNA分析|多样本merge 和 harmony去批次
1257 0
|
区块链 开发工具 数据安全/隐私保护
【Web3新手知识】了解 Wei 和 Gwei:以太坊最小面额解释
在以太坊世界中,Wei 是一个关键概念,它是这个区块链网络中最小的以太单位。随着加密货币的普及,理解各种面值变得至关重要。
1009 0