首页 > 解决方案 > R中的饼图,其中切片表示数据集列中值的频率

问题描述

我想为我的数据框的每一列制作饼图,其中切片代表频率,其中列中的值出现。例如,以下将生成一个包含 3 列的数据框,并将数字向下舍入为个位数。

test1<-rnorm(200,mean = 20, sd = 2)
test2<-rnorm(200,mean=20, sd =1)
test3<-rnorm(200,mean=20, sd =3)
testdata<-cbind(test,test2,test3)
testdata <-round(testdata,0)

所以我需要有 3 个饼图,其中切片表示次数,其中给定值出现在相应的列中(如果可能,在饼图顶部显示列的名称)到目前为止,我已经尝试过pie(frame(testdata$test1)),但它适用于创建单个饼图,我的真实数据有 25 列。最重要的是,尝试传递“main =”参数来命名它会导致错误。

先感谢您。

标签: rchartspie-chart

解决方案


ggplot2是制作精美情节的首选图书馆。要拥有 3 个不同的饼图,需要稍微调整数据,这是通过一些tidyverse-functions 完成的。

test1<-rnorm(200,mean = 20, sd = 2)
test2<-rnorm(200,mean=20, sd =1)
test3<-rnorm(200,mean=20, sd =3)
testdata<-cbind(test1,test2,test3)
testdata <-round(testdata,0)

library(ggplot2)
library(tidyverse)

plotdata <- testdata %>% 
  as_tibble() %>% 
  pivot_longer(names(.),names_to = "data1", values_to = "value") %>% 
  group_by(data1) %>% 
  count(value) 

ggplot(plot_data, aes( x = "", y = n, fill = factor(value))) +
  geom_col(width = 1, show.legend = TRUE) +
  coord_polar("y", start = 0) +
  facet_wrap(~data1)

在此处输入图像描述


推荐阅读