R语言 使用ggplot2创建多个饼图

R语言 使用ggplot2创建多个饼图

饼图,也被称为圆形图,是以圆形格式表示数据的相对大小或频率的图形。基本上,它有助于将某组数据的相对大小或频率作为整体的一部分进行可视化。本文讨论了如何将多个饼图创建为一个框架,以便进行连续比较。

使用的函数

  • pie()函数,顾名思义,用于实现饼图的可视化。

语法: pie(x, labels, radius, main, col, clockwise)

参数

  • x: 这个参数是包含饼图值的向量。
  • labels: 这个参数是包含饼图中所有切片的标签的向量。
  • radius : 这个参数是饼图的半径值。这个值在-1到1之间。
  • main: 该参数是图表的标题。
  • col: 该参数是饼图中使用的颜色。
  • clockwise: 这个参数是逻辑值,用于按顺时针或逆时针方向绘制切片。

  • coord_polar()函数用于创建一个极坐标系统,这有助于绘制饼图。

语法

coord_polar(theta = "x", start = 0, direction = 1, clip = "on")

参数

  • theta 代表角度
  • start 用于设置偏移量
  • direction
  • clip 决定绘图是否应该被剪掉

  • facet_grid() 创建一个矩阵来显示行和列的分面变量

语法

facet_grid(facet, margins=FALSE, scales="fixed", space="fixed", shrink=TRUE, labeller="label_value", as.table=TRUE, drop=TRUE)

让我们首先创建一个常规饼图

程序1 :常规饼图

x <- c(3,3,2,1,1)
  
labels <- c('ADA','CN','PDS','CPDP','PE')
  
pie(x, labels, main="Credits of subjects", col=rainbow(length(x)))

输出

在R中使用ggplot2创建多个饼图

为了在R中建立一个饼图,我们可以使用ggplot2包,但它没有直接的方法来这样做。相反,我们绘制一个条形图,然后用coord_polar()函数将其转换成饼图。

方法

  • 导入库
  • 创建数据
  • 创建数据框架
  • 绘制一个条形图
  • 将柱状图转换成饼状图
  • 删除数值和网格

程序2: 使用ggplot2绘制饼图

library(ggplot2)
  
df = data.frame(x <- c(3,3,2,1,1),
                labels <- c('ADA','CN','PDS','CPDP','PE'))
  
ggplot(df, aes(x="", y=x, fill=labels)) +geom_bar(width = 1, stat = "identity") +
  coord_polar("y", start=0) +theme_void()

输出

在R中使用ggplot2创建多个饼图

为了在R中使用ggplot2绘制多个饼图,我们必须使用一个名为facet_grid()的额外方法 。 这个方法形成一个由行和列的分面变量定义的矩阵。当我们有两个不同的变量,并且需要一个包含这两个变量的所有组合的矩阵时,我们可以使用这个方法。

方法

  • 导入库
  • 创建数据框架
  • 将变量转换为分类变量
  • 绘制条形图
  • 转换为饼状图
  • 添加facet_grid()

程序3: 多饼图

library(ggplot2)
df = data.frame(subject <- c('ADA','ADA','ADA','CN','CN','CN','PDS','PDS','PDS','CPDP',
                         'CPDP','CPDP'),
                credit <- c('Midsem','Viva','Attendance','Midsem','Viva','Attendance',
                            'Midsem','Viva','Attendance','Midsem','Viva','Attendance'),
                value <- c(50,30,20,40,40,20,50,35,15,50,40,10))
  
dfsubject <- factor(dfsubject)
dfcredit <- factor(dfcredit) 
  
ggplot(data=df, aes(x=" ", y=value, group=credit, colour=credit, fill=credit)) +
         geom_bar(width = 1, stat = "identity") +
         coord_polar("y", start=0) + 
         facet_grid(.~ subject) +theme_void()

输出

在R中使用ggplot2创建多个饼图

我们还可以使用R中的ggplot2将多个饼图绘制成甜甜圈图的形式。

方法

  • 导入库
  • 创建数据框架
  • 将变量转换为分类变量
  • 使用geom_col()绘制条形图
  • 使用scale_x_discrete()在主题前添加一个空元素
  • 使用coord_polar()转换为饼图。

程序4: 多饼图/甜甜圈图

library(ggplot2)
df = data.frame(subject <- c('ADA','ADA','ADA','CN','CN','CN','PDS','PDS','PDS'),
                credit <- c('Midsem','Viva','Attendance','Midsem','Viva','Attendance',
                            'Midsem','Viva','Attendance'),
                value <- c(50,30,20,40,40,20,50,35,15))
  
dfsubject <- factor(dfsubject) # converts to a categorical variable
dfcredit <- factor(dfcredit) # converts to a categorical variable
  
  
ggplot(df, aes(x = subject, y = value, fill = credit)) +
  geom_col() +scale_x_discrete(limits = c(" ", "ADA","CN","PDS")) +coord_polar("y")

输出

在R中使用ggplot2创建多个饼图

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程