当前位置: 首页 > news >正文

R语言ggplot2 | 用百分比格式表示数值

📋文章目录

  • Percent() 函数介绍
    • 例子1,在向量中格式化百分比:
    • 例子2,格式化数据框列中的百分比:
    • 例子3,格式化多个数据框列中的百分比:
  • 如何使用percent()函数在绘图过程展示

   通常在绘图时,遇到小数点的数值会默认保留原格式。如何使用百分比来展示,可以借助scales包中的percent ( )函数来解决。

Percent() 函数介绍

   在 R 中将数字格式化为百分比的最简单方法是使用 scales 包中的 percent() 函数。

# 此函数使用以下语法:
percent(x, accuracy = 1)

不懂的函数可以先help或者?函数名(前提需要先加载对应R包)
在这里插入图片描述在这里插入图片描述
介绍主要的参数:
x : 要格式化为百分比的对象
accuracy : 要四舍五入的数字。例如,使用 .01 舍入到小数点后两位

例子1,在向量中格式化百分比:

library(scales)
data <- c(0.3, 0.7, 0.14, 0.18, 0.22, 0.78)
# 精确到整数
percent(data, accuracy = 1)
# 精确到小数点1位
percent(data, accuracy = 0.1)
# 精确小数点2位
percent(data, accuracy = 0.01)

在这里插入图片描述
从结果来看,我们只需要在percent函数中设定好accuracy就可以了。切记,data是一个向量(例子2可以更加确定是向量)。

例子2,格式化数据框列中的百分比:

library(scales)
df = data.frame(region = c('A', 'B', 'C', 'D'),growth = c(0.3, 0.7, 0.14, 0.18))
df
# 对数据框中增长列变量以百分比格式显示数字
df$growth <- percent(df$growth, accuracy=1)
df

在这里插入图片描述

例子3,格式化多个数据框列中的百分比:

library(scales)
df = data.frame(region = c('A', 'B', 'C', 'D'),growth = c(0.3, 0.7, 0.14, 0.18),trend = c(0.04, 0.09, 0.22, 0.25))
df
# 对数据框中增长列和趋势列变量以百分比格式显示数字
df[2:3] <- sapply(df[2:3], function(x) percent(x, accuracy=1))
df

在这里插入图片描述
这里用到了sapply函数,对数据框中多列向量进行批量运行。不太懂的可以help下sapply函数的用法。

如何使用percent()函数在绘图过程展示

加载数据:
在这里插入图片描述

如何在ggplot2绘图时候展示,这里需要注意的,我们用了geom_text和scale_x_continuous时候都用到了percent。其中,第一个用的是percent () 函数(将数值向量格式化为百分比),第二个则是用的百分比的labels表达。

employed %>%drop_na ( ) %>%group_by(minor_occupation) %>%summarise(employ_n = sum(employ_n)) %>%mutate(pct = employ_n/sum(employ_n)) %>%arrange(desc(pct)) %>% . [1:10, ] %>%ggplot(aes(x = pct ,y = reorder(minor_occupation, pct)))+geom_col(aes(fill = I(ifelse(pct == max(pct), "#4281a4", "#9cafb7"))), width = 0.85)+geom_text(aes(label = percent(round(pct, 3)), color = I(ifelse(pct == max(pct), "white", "black"))), size = 2, hjust = 1.1) +scale_y_discrete(labels = function(x) str_wrap(x, 28)) +scale_x_continuous(labels = percent, limits=c(0, 0.30), expand = c(0, 0))+
theme_light() +theme(plot.margin = ggplot2::margin(0, 10, 0, 0),plot.title = element_text(face = "bold", size = 16)) +theme(axis.ticks.y = element_blank()) +labs(y = "Minor Occupation", x = "Percent")

在这里插入图片描述

http://www.lryc.cn/news/35017.html

相关文章:

  • 【代码训练营】day53 | 1143.最长公共子序列 1035.不相交的线 53. 最大子序和
  • 消息队列理解
  • 【Linux内核一】在Linux系统下网口数据收发包的具体流向是什么?
  • 南京、西安集成电路企业和高校分布一览(附产业链主要厂商及高校名录)
  • 后端Java随机比大小游戏实战讲解
  • dolphinschedule使用shell任务结束状态研究
  • 如何用postman实现接口自动化测试
  • AHRS(航姿参考系统)IMU(惯性测量单元)和INS的分析对比研究-2023-3-8
  • 企业管理经典书籍推荐
  • JVM系列——破坏双亲委派模型的场景和应用
  • 基于智能边缘和云计算的数字经济服务细粒度任务调度机制
  • ccc-pytorch-卷积神经网络实战(6)
  • 置信椭圆(误差椭圆)详解
  • FreeSWITCH 智能呼叫流程设计
  • 什么是Restful风格
  • sumifs的交叉 表的例子
  • React :一、简单概念
  • Actipro WinForms Studio Crack
  • 英伦四地到底是什么关系?
  • Google三大论文之GFS
  • 嵌入式安防监控项目——exynos4412主框架搭建
  • YOLOv5s网络模型讲解(一看就会)
  • kkfileView linux 离线安装
  • 如何编写BI项目之ETL文档
  • 【LeetCode】剑指 Offer 24. 反转链表 p142 -- Java Version
  • LAY-EXCEL导出excel并实现单元格合并
  • 配置VM虚拟机Centos7网络
  • Kafka 位移主题
  • 详细讲解零拷贝机制的进化过程
  • 2023年场外个股期权研究报告