R语言学习 case2:人口金字塔图

step1:导入库

library(ggplot2)
library(ggpol)
library(dplyr)

step2:读取数据

data <- readxl::read_xlsx("data_new.xlsx", sheet = 1)
data
  • readxl::read_xlsx() 是 readxl 包中的函数,用于读取Excel文件。

step3:数据转换

mydata <- data %>% select(1, 3, 4) %>% 
  reshape2::melt(id.vars = "Group", variable.name = "Sex", value.name = "Prop")
  • mydata <- data %>% select(1, 3, 4):select(1, 3, 4) 选择数据框 data 中的第1列、第3列和第4列。
  • %>% reshape2::melt(id.vars = "Group", variable.name = "Sex", value.name = "Prop")
  • reshape2::melt() 函数用于将数据框从宽格式(wide format)转换为长格式(long format),这样更容易进行分析和可视化
  • id.vars = "Group" 指定 “Group” 列作为标识变量,即不进行融化的列。
  • variable.name = "Sex"指定新生成的列的名称,该列包含了之前选择的列的列名(在这里是 “Sex”)。

step4:对称显示,取一半设置为负

mydata$Prop <- ifelse(mydata$Sex == "Male", mydata$Prop * -1, mydata$Prop)
  • ifelse(mydata$Sex == "Male", mydata$Prop * -1, mydata$Prop)

  • mydata$Sex == "Male" 是一个条件表达式,检查 “Sex” 列是否等于 “Male”。
    如果条件为真,即 “Sex” 列的值是 “Male”,则执行 mydata$Prop * -1,将 “Prop” 列的值乘以 -1。如果条件为假,即 “Sex” 列的值不是 “Male”,则保持 “Prop” 列的值不变。
    ifelse() 函数将根据条件逐元素地应用这个逻辑,生成一个新的列。

step5: 标签文本

mydata$label <- abs(mydata$Prop) %>% round(digits = 2)
head(mydata)
  • 在数据框 mydata 中添加一个名为 “label” 的新列,该列包含 “Prop” 列的绝对值,并将结果取两位小数

step6: 绘图

plot <- ggplot(mydata, aes(Prop, Group, fill = Sex)) + 
  geom_col(width = 0.6, color = "black") + 
  geom_text(aes(label = label), size = 4) + 
  facet_share(~Sex, scales = "free_x", reverse_num = TRUE) + 
  #ggtitle("福建省2021年人口年龄构成") + 
  labs(x = "Prop(%)", 
  # 设置 x 轴标签为 "Prop(%)"
       caption = "Source:福建省统计年鉴(2022)") + 
  scale_fill_brewer(palette = "Set1"  ) + 
  theme_bw(base_size = 15) + 
  theme(axis.title.y = element_blank(),
        plot.title = element_text(hjust = 0.5),
        axis.text = element_text(colour = "black"))

在这里插入图片描述

  • facet_share() 进行分面

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/334618.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VUE表单中多个el-upload上传组件共享回调函数解决方案

产品需求界面&#xff1a; 在产品配置页面表单中需要上传多个图片&#xff0c;项目中上传组件采用Element Plus 中的 el-upload&#xff0c;目前问题是每个上传组件都需要实现自己的回调&#xff0c;比如:on-change&#xff0c;采用官方推荐标准代码如下&#xff1a; <el-fo…

抖动与相噪

抖动&#xff08;Jitter&#xff09;和相噪&#xff08;Phase Noise&#xff09;都是与信号时钟或波形稳定性相关的概念&#xff0c;它们在通信系统和电子设备中都有重要作用。 抖动(Jitter)反映的是数字信号偏离其理想位置的时间偏差&#xff0c;是一个时域上的概念。 高频数…

MybatisPlus框架入门级理解

MybatisPlus 快速入门入门案例常见注解常用配置 核心功能条件构造器自定义SQLService接口 快速入门 入门案例 使用MybatisPlus的基本步骤&#xff1a; 1.引入MybatisPlus的起步依赖 MybatisPlus官方提供了starter&#xff0c;其中集成了Mybatis和MybatisPlus的所有功能&#…

宏景eHR get_org_tree.jsp SQL注入漏洞复现

产品简介 宏景eHR人力资源管理软件是一款人力资源管理与数字化应用相融合&#xff0c;满足动态化、协同化、流程化、战略化需求的软件. 漏洞概述 宏景eHR zp_options/get_org_tree.jsp接口处存在SQL注入漏洞&#xff0c;未经过身份认证的远程攻击者可利用此漏洞执行任意SQL指…

DMA技术在STM32中优化UART、SPI和I2C通信性能的研究与实现

DMA&#xff08;Direct Memory Access&#xff0c;直接存储器访问&#xff09;技术可以在STM32微控制器上优化UART、SPI和I2C等通信性能。DMA可以实现数据的高速传输&#xff0c;减轻CPU的负担&#xff0c;提高系统性能。在本篇文章中&#xff0c;我将探讨DMA技术在STM32中优化…

MYSQL之存储引擎

存储引擎简介 存储引擎就是存储数据&#xff0c;建立索引、更新/查询数据等技术的实现方式。存储引擎基于表&#xff0c;而不是基于库的&#xff0c;所以存储引擎也可被称为表类型。 查询建表语句&#xff1a; show create table 表名; 查询当前数据库支持的存储引擎&#…

redis未授权访问全漏洞复现

redis未授权访问全漏洞复现 Redis 有关的漏洞具有明显的时间分段性&#xff0c;在15年11月之前&#xff0c;主要是未授权导致的数据泄露&#xff0c;获得一些账号密码。另外还可以 DoS&#xff08;参考&#xff1a;Sangfor VMP redis unauthorized access vulnerability&#…

54 C++ 多线程 条件变量 condition_variable,wait(),notify_one()

一 前提&#xff1a;之前代码的缺陷 在前面我们使用两个线程 &#xff0c;一个线程读&#xff0c;一个线程写来完成对于共享数据访问。 我们把这个代码 先放在这里&#xff0c;方便回忆&#xff0c;然后说明代码可能存在的问题&#xff0c;然后改动。 class Teacher174 { pri…

Producer源码解读

Producer源码解读 在 Kafka 中, 我们把产生消息的一方称为 Producer 即 生产者, 它是 Kafka 的核心组件之一, 也是消息的来源所在。它的主要功能是将客户端的请求打包封装发送到 kafka 集群的某个 Topic 的某个分区上。那么这些生产者产生的消息是怎么传到 Kafka 服务端的呢&a…

使用emby在Nas群晖搭建一个私人影院

1、安装Emby 打开套件中心搜索emby并安装 2、新增一个共享文件夹 设置好&#xff0c;无脑下一步到应用 给emby赋予这个文件夹的读写权限 保存 3、打开emby service 选择媒体库

chatgpt的实用技巧四temperature 格式

四、temperature 格式 GPT3.5 temperature 的范围为&#xff1a;0-0.7&#xff1b; GPT4.0 temperature 的范围为&#xff1a;0-1&#xff1b; 当 temperature 为 0 时候&#xff0c;结果可稳定。 当 temperature 为 0.7/1 时候&#xff0c;结果发散具备创力。 数值越大&a…

操作教程|JumpServer堡垒机结合Ansible进行批量系统初始化

运维人员常常需要对资产进行系统初始化的操作&#xff0c;而初始化服务器又是一项繁琐的工作&#xff0c;需要花费运维人员大量的时间和精力。为了提高效率&#xff0c;许多组织会使用自动化工具和脚本来简化这些任务。自动化工具的运用可以大幅降低运维人员的工作量&#xff0…

Elasticsearch 数据类型相关总结:快速参考指南【记录】

在Elasticsearch中&#xff0c;有多种数据类型可用于定义字段。 在开始了解数据类型之前&#xff0c;首先要知道&#xff0c;在Elasticsearch中&#xff0c;分词处理主要针对文本字段&#xff0c;而对于其他类型字段&#xff08;如数值、日期、布尔等&#xff09;&#xff0c;通…

MCM备赛笔记——熵权法

Key Concept 熵权法是一种基于信息熵概念的权重确定方法&#xff0c;用于多指标决策分析中。信息熵是度量信息量的不确定性或混乱程度的指标&#xff0c;在熵权法中&#xff0c;它用来反映某个指标在评价过程中的分散程度&#xff0c;进而确定该指标的权重。指标的分散程度越高…

[C#]winform部署openvino调用padleocr模型

【官方框架地址】 https://github.com/PaddlePaddle/PaddleOCR 【算法介绍】 OpenVINO和PaddleOCR都是用于计算机视觉应用的工具&#xff0c;但它们有不同的特点和用途。OpenVINO是一个由Intel开发的开源工具套件&#xff0c;主要用于加速深度学习推理&#xff0c;而PaddleOC…

Javaweb之SpringBootWeb案例员工管理之删除员工的详细解析

3.3 删除员工 查询员完成之后&#xff0c;我们继续开发新的功能&#xff1a;删除员工。 3.3.1 需求 当我们勾选列表前面的复选框&#xff0c;然后点击 "批量删除" 按钮&#xff0c;就可以将这一批次的员工信息删除掉了。也可以只勾选一个复选框&#xff0c;仅删除一…

【开源】基于JAVA语言的免税店商城管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、系统设计2.1 功能模块设计2.2 研究方法 三、系统展示四、核心代码4.1 查询免税种类4.2 查询物品档案4.3 新增顾客4.4 新增消费记录4.5 审核免税 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的免税店商城管理系…

代码之外:工程师的成长进阶秘籍

程序员只懂技术能行吗&#xff1f; 为什么说技术人员“说”和“写”总得擅长一个&#xff1f; 你以为的“关注结果”是真的结果吗&#xff1f; 从一线工程师跃升团队管理者一共分几步&#xff1f; 在不断变化的职场环境中&#xff0c;技术人如何保持竞争力并实现自我增值&a…

【消息队列】RocketMQ 生产和消费中的集群模式和广播模式

在消息队列系统中&#xff0c;生产者和消费者的模式通常包括集群模式和广播模式。这两种模式分别用于不同的场景&#xff0c;具有不同的特点和优势。 1. 集群模式&#xff08;Cluster Mode&#xff09;&#xff1a; 在集群模式下&#xff0c;多个相同角色的实例组成一个集群&…
最新文章