R语言 如何使用ggplot2创建一个带有百分比标签的饼图

R语言 如何使用ggplot2创建一个带有百分比标签的饼图

在这篇文章中,我们将看到如何在R编程语言中使用ggplot2创建一个带有百分比标签的饼图。

使用的软件包

R编程中的dplyr包 可以用来进行数据操作和统计。该包可以使用R语言中的以下命令下载和安装。

install.packages("dplyr")

R编程中的 ggplot2包 用于绘制图形,使数据可视化,并使用各种图表进行描述。运行以下命令后,该包被用作一个库。

install.packages("ggplot2")

R编程中的ggplot方法 是用来使用指定的数据框架进行图形可视化的。它被用来实例化一个ggplot对象。可以为绘图对象创建美学映射,以分别确定x轴和y轴之间的关系。可以向创建的ggplot对象添加其他组件。

语法: ggplot(data = NULL, mapping = aes(), fill = )

参数 :

  • data – 用于绘图的默认数据集。
  • mapping – 用于绘图的审美贴图列表。

Geom可以用各种方法添加到绘图中。 R编程中的 geom_line()方法 可以用来在绘图中添加图形线。它被作为一个组件添加到现有的绘图中。美学映射也可以包含颜色属性,根据不同的数据框架分配不同的颜色。

geom_bar()方法 用于构建与每组病例数成比例的条形高度。

语法: geom_bar ( width, stat)

参数 :

width – 条形图的宽度

然后在geoms之外添加 coord_polar() 组件,这样我们就能确保以极坐标构建一个堆积的条形图。

语法: coord_polar(theta = “x”, start = 0)

参数:

theta – 将角度映射到(x或y)的变量

start – 起点与12点的偏移,单位为弧度。

接下来是应用 geom_text()方法 ,用来做文本注释。

geom_text(aes() , label, size)

以下是实施情况

# importing the required libraries
library(dplyr)
library(ggplot2)
library(ggrepel)
library(forcats)
library(scales)
  
# creating a data frame
data_frame <- data.frame(col1 = letters[1:3],
                         col2 = c(46,24,12))
print("Original DataFrame")
print(data_frame)
sum_of_obsrv <- 82 
  
# computing the pie chart 
pie_chart <- ggplot(data_frame, aes(x="", y=col2, fill=col1)) +
  geom_bar(width = 1, stat = "identity") +
  coord_polar("y", start=0) +
  geom_text(aes(y = col2/2 + c(0, cumsum(col2)[-length(col2)]),
                label = percent(col2/sum_of_obsrv )), size=5)
# printing the percentage
print(pie_chart)

输出

[1] "Original DataFrame" 
col1 col2 
1    a   46 
2    b   24 
3    c   12

如何在R语言中使用ggplot2创建一个带有百分比标签的饼图?

为了将指数与水平一起容纳在参数图内,我们可以对数据框架本身进行突变,以避免在图表绘制过程中进行累积频率及其相应中点的计算。这种方法没有前一种方法那么繁琐。在这种方法中,所需的三个数据属性以列的形式附加到数据框中,它们是 。

  • 累积频率,由cumsum()方法计算,参数为列名。
  • 中间点,计算为累积频率与列值之差的一半。
  • 标签,用于计算文本注释形式的标签。

接下来是theme_nothing方法的应用,它简单地剥离了ggplot2中的所有主题元素。

# importing required libraries
library(dplyr)
library(ggplot2)
library(ggmap) 
  
# creating a data frame
data_frame <- data.frame(col1 = c(28,69,80,40),
                 col2 = LETTERS[1:4]) %>%
  mutate(col2 = factor(col2, levels = LETTERS[1:4]),
         # computing the column values
         cf = cumsum(col1),
         mid = cf - col1 / 2,
         label = paste0(col2, " ", round(col1 / sum(col1) * 100, 1), "%"))
  
# printing the data frame
print("Original DataFrame")
print(data_frame)
  
# creating a plot
ggplot(data_frame, aes(x = 1, weight = col1, fill =col2)) +
  geom_bar(width = 1) +
  coord_polar(theta = "y") +
  geom_text(aes(x = 1.3, y = mid, label = label)) +
  theme_nothing()               

输出

[1] "Original DataFrame" 
col1 col2  cf   mid   label 
1   28    A  28  14.0 A 12.9% 
2   69    B  97  62.5 B 31.8% 
3   80    C 177 137.0 C 36.9% 
4   40    D 217 197.0 D 18.4%

如何在R语言中使用ggplot2创建一个带有百分比标签的饼图?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程