R 从逗号分隔的单元格数据创建饼图矩阵
假设我有一个包含数据的矩阵: 我想创建一个饼图矩阵。输出应该是这样的 在R中我应该如何继续R 从逗号分隔的单元格数据创建饼图矩阵,r,csv,matrix,data-visualization,pie-chart,R,Csv,Matrix,Data Visualization,Pie Chart,假设我有一个包含数据的矩阵: 我想创建一个饼图矩阵。输出应该是这样的 在R中我应该如何继续 注意:我希望它将饼图作为矩阵的一个元素。这里有一种方法: library(stringr) # to split strings library(tidyverse) # to unnest lists of numbers library(ggplot2) # for graphs library(dplyr) # for pretty code # Define your matr
注意:我希望它将饼图作为矩阵的一个元素。这里有一种方法:
library(stringr) # to split strings
library(tidyverse) # to unnest lists of numbers
library(ggplot2) # for graphs
library(dplyr) # for pretty code
# Define your matrix
mat <- matrix(c(NA, "1,2,3", "6,7,1", "1,2,3", NA, "8,5,2", "6,7,1", "8,5,2", NA),
nrow=3,
ncol=3,
dimnames = list(c("P1", "P2", "P3"), c("P1", "P2", "P3")))
mat %>%
# Convert matrix to a data frame
as.table() %>%
as.data.frame() %>%
# Extract/parse numbers from strings (e.g. "1,2,3")
mutate(Freq = str_split(Freq,",")) %>%
unnest(Freq) %>%
mutate(Freq = as.integer(Freq)) %>%
# Convert the values to a percentage (which adds up to 1 for each graph)
group_by(Var1, Var2) %>%
mutate(Freq = ifelse(is.na(Freq), NA, Freq / sum(Freq)),
color = row_number()) %>%
ungroup() %>%
# Plot
ggplot(aes("", Freq, fill=factor(color))) +
geom_bar(width = 1, stat = "identity") +
coord_polar("y") + # Make it a pie chart
facet_wrap(~Var1+Var2) + # Break it down into 9 charts
# Below is just aesthetics
theme(axis.text = element_blank(),
axis.ticks = element_blank(),
panel.grid = element_blank(),
axis.title = element_blank()) +
guides(fill = FALSE)
library(stringr)#拆分字符串
图书馆(tidyverse)#到最新的数字列表
图库(ggplot2)#用于图形
库(dplyr)#用于漂亮的代码
#定义你的矩阵
材料%
#将矩阵转换为数据帧
as.table()%>%
as.data.frame()%>%
#从字符串中提取/分析数字(例如“1,2,3”)
突变(频率=str_分割(频率,“,”)%%
未测试(频率)%%>%
变异(Freq=as.integer(Freq))%>%
#将值转换为百分比(每个图形加起来为1)
分组依据(Var1,Var2)%>%
变异(Freq=ifelse(is.na(Freq),na,Freq/sum(Freq)),
颜色=行数())%>%
解组()%>%
#密谋
ggplot(aes(“”,频率,填充=因子(颜色)))+
几何图形条(宽度=1,stat=“identity”)+
坐标(y)+将其做成饼图
facet_wrap(~Var1+Var2)+#将其分解为9个图表
#下面就是美学
主题(axis.text=element_blank(),
axis.ticks=元素_blank(),
panel.grid=element\u blank(),
axis.title=元素_blank())+
辅助线(填充=假)
结果:
这里有一种方法:
library(stringr) # to split strings
library(tidyverse) # to unnest lists of numbers
library(ggplot2) # for graphs
library(dplyr) # for pretty code
# Define your matrix
mat <- matrix(c(NA, "1,2,3", "6,7,1", "1,2,3", NA, "8,5,2", "6,7,1", "8,5,2", NA),
nrow=3,
ncol=3,
dimnames = list(c("P1", "P2", "P3"), c("P1", "P2", "P3")))
mat %>%
# Convert matrix to a data frame
as.table() %>%
as.data.frame() %>%
# Extract/parse numbers from strings (e.g. "1,2,3")
mutate(Freq = str_split(Freq,",")) %>%
unnest(Freq) %>%
mutate(Freq = as.integer(Freq)) %>%
# Convert the values to a percentage (which adds up to 1 for each graph)
group_by(Var1, Var2) %>%
mutate(Freq = ifelse(is.na(Freq), NA, Freq / sum(Freq)),
color = row_number()) %>%
ungroup() %>%
# Plot
ggplot(aes("", Freq, fill=factor(color))) +
geom_bar(width = 1, stat = "identity") +
coord_polar("y") + # Make it a pie chart
facet_wrap(~Var1+Var2) + # Break it down into 9 charts
# Below is just aesthetics
theme(axis.text = element_blank(),
axis.ticks = element_blank(),
panel.grid = element_blank(),
axis.title = element_blank()) +
guides(fill = FALSE)
library(stringr)#拆分字符串
图书馆(tidyverse)#到最新的数字列表
图库(ggplot2)#用于图形
库(dplyr)#用于漂亮的代码
#定义你的矩阵
材料%
#将矩阵转换为数据帧
as.table()%>%
as.data.frame()%>%
#从字符串中提取/分析数字(例如“1,2,3”)
突变(频率=str_分割(频率,“,”)%%
未测试(频率)%%>%
变异(Freq=as.integer(Freq))%>%
#将值转换为百分比(每个图形加起来为1)
组\u by(Var1,Var2)%%%
变异(Freq=ifelse(is.na(Freq),na,Freq/sum(Freq)),
颜色=行数())%>%
解组()%>%
#密谋
ggplot(aes(“”,频率,填充=因子(颜色)))+
几何图形条(宽度=1,stat=“identity”)+
坐标(y)+将其做成饼图
facet_wrap(~Var1+Var2)+#将其分解为9个图表
#下面就是美学
主题(axis.text=element_blank(),
axis.ticks=元素_blank(),
panel.grid=element\u blank(),
axis.title=元素_blank())+
辅助线(填充=假)
结果:
小心……人们通常可以从编写一些代码开始。查阅
par(mfrow=c(3,3))
和?pie
可能也?text
@RichScriven我无法思考如何处理这个问题。我只需要一个想法。@G5W:是的,这可能是一种可能性,但我希望它能使饼图成为矩阵的一个元素,但要小心……人们通常可以从编写一些代码开始。查找par(mfrow=c(3,3))
和?饼也可能?text
@RichScriven我无法思考如何处理这个问题。我只需要一个想法。@G5W:是的,这可能是一种可能性,但我希望它能将饼图作为矩阵的一个元素