R中的嵌套饼图
在本文中,我们将讨论如何在 R 编程语言中创建嵌套饼图。
饼图是只能显示一系列数据的圆形图。饼图的切片面积表示由该切片可视化的数据部分的比率。但有时我们需要同时显示两个系列的数据以更好地分析数据。我们可以通过创建嵌套饼图来做到这一点,该饼图是嵌套在圆环图中的饼图。
方法一:使用 Plotly 包创建嵌套饼图
要使用 Plotly 包在 R 语言中创建嵌套饼图,我们将首先创建一个基本饼图和一个基本圆环图。然后结合这两个层来创建一个嵌套的饼图。
要在 R 控制台中安装和导入 plotly 包,语法如下:
install.package('plotly')
library(plotly)
创建饼图:
在 R 语言中,我们可以使用带有 plot_ly()函数的 Plotly 包来创建饼图。 plot_ly()函数将数据框作为要可视化的参数。然后我们添加 add_pie()函数来创建饼图。
句法:
plot_ly( df ) %>% add_pie( df, labels, value )
在哪里,
- df:确定要可视化的数据框。
- 标签:确定具有标签的变量。
- value:确定具有要在饼图中显示的值的变量。
例子:
这是使用 plot_ly()函数制作的基本饼图。
R
# load library plotly
library(plotly)
# create sample data frame
sample_data <- data.frame(group= c('Group1', 'Group2',
'Group3', 'Group4'),
value= c(25,30,20,25))
# create pie chart using plot_ly() function
plot_ly(sample_data) %>%
add_pie(sample_data, labels = ~`group`, values = ~`value`)
R
# load library plotly
library(plotly)
# create sample data frame
sample_data <- data.frame(group= c('Group1', 'Group2',
'Group3'),
value= c(25,30,20))
# create donut chart using plot_ly() function
plot_ly(sample_data) %>%
add_pie(sample_data, labels = ~`group`, values = ~`value`,
type = 'pie', hole = 0.5)
R
# load library plotly
library(plotly)
# create sample data frame
sample_data <- data.frame(group= c('Group1', 'Group2', 'Group3', 'Group4'),
value1= c(25,30,20,25),value2= c(15,40,10,35))
# create pie chart using plot_ly() function
plot_ly(sample_data) %>%
add_pie(labels = ~`group`, values = ~`value1`,
type = 'pie', hole = 0.7, sort = F,
marker = list(line = list(width = 2))) %>%
add_pie(sample_data, labels = ~`group`, values = ~`value2`,
domain = list(
x = c(0.15, 0.85),
y = c(0.15, 0.85)),
sort = F)
R
# load library ggplot2
library(ggplot2)
# create sample data frame
sample_data <- data.frame(group= c('Group1', 'Group2',
'Group1', 'Group2',
'Group1', 'Group2'),
name= c('name1', 'name1',
'name2', 'name2',
'name3', 'name3'),
value= c(25,30,35,20,40,50))
# create nested pie chart using ggplot
ggplot(sample_data, aes(x = factor(group), y = value, fill = factor(name))) +
geom_col() +
scale_x_discrete(limits = c("Group1", "Group2")) +
coord_polar("y")
输出:
创建一个圆环图:
在此方法中,要创建一个基本的圆环图,我们将使用带有孔参数的 plot_ly()函数。
句法:
plot_ly( df ) %>% add_pie( df, labels, value, hole )
在哪里,
- df:确定要可视化的数据框。
- 标签:确定具有标签的变量。
- value:确定具有要在饼图中显示的值的变量。
- 孔:确定圆环图中孔的大小。
例子:
这是使用带有孔参数的 plot_ly()函数制作的基本圆环图。
R
# load library plotly
library(plotly)
# create sample data frame
sample_data <- data.frame(group= c('Group1', 'Group2',
'Group3'),
value= c(25,30,20))
# create donut chart using plot_ly() function
plot_ly(sample_data) %>%
add_pie(sample_data, labels = ~`group`, values = ~`value`,
type = 'pie', hole = 0.5)
输出:
创建嵌套饼图:
要创建嵌套饼图,我们首先使用 plot_ly()函数创建一个基数。然后在 add_pie()函数的帮助下添加一个圆环图图层。然后将其转换为嵌套饼图,我们添加了一个饼图的新层,并使用域参数将其调整为圆环图的中心。
句法:
plot_ly( df ) %>% add_pie( df, labels, value, hole ) %>% add_pie( df, labels, value, domain )
- 在哪里,
- df:确定要可视化的数据框。
- 标签:确定具有标签的变量。
- value:确定具有要在饼图中显示的值的变量。
- 孔:确定圆环图中孔的大小。
- 域:确定告诉饼图位置和大小的向量。
例子:
这是使用 plot_ly()函数制作的基本嵌套饼图。
R
# load library plotly
library(plotly)
# create sample data frame
sample_data <- data.frame(group= c('Group1', 'Group2', 'Group3', 'Group4'),
value1= c(25,30,20,25),value2= c(15,40,10,35))
# create pie chart using plot_ly() function
plot_ly(sample_data) %>%
add_pie(labels = ~`group`, values = ~`value1`,
type = 'pie', hole = 0.7, sort = F,
marker = list(line = list(width = 2))) %>%
add_pie(sample_data, labels = ~`group`, values = ~`value2`,
domain = list(
x = c(0.15, 0.85),
y = c(0.15, 0.85)),
sort = F)
输出:
方法2:使用ggplot2包创建嵌套饼图
要使用 ggplot2 包在 R 语言中创建嵌套饼图,我们首先创建一个矩形图,然后使用 coord_polar()函数将其转换为嵌套饼图/甜甜圈图。 coord_polar()函数将笛卡尔坐标系转换为ggplot2中的极坐标系。
要在 R 控制台中安装和导入 ggplot2 包,语法如下:
install.package('ggpot2')
library(ggplot2)
句法:
plot + coord_polar( theta, start, direction, clip )
在哪里,
- theta:确定角度
- start:确定设置偏移量
- 方向:确定变换的方向,即 x 或 y
- clip:决定是否应该剪切绘图
例子:
这是使用 ggplot2 包制作的嵌套饼图。
R
# load library ggplot2
library(ggplot2)
# create sample data frame
sample_data <- data.frame(group= c('Group1', 'Group2',
'Group1', 'Group2',
'Group1', 'Group2'),
name= c('name1', 'name1',
'name2', 'name2',
'name3', 'name3'),
value= c(25,30,35,20,40,50))
# create nested pie chart using ggplot
ggplot(sample_data, aes(x = factor(group), y = value, fill = factor(name))) +
geom_col() +
scale_x_discrete(limits = c("Group1", "Group2")) +
coord_polar("y")
输出: