📋文章目录
- 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")