【发布时间】:2018-07-19 13:46:40
【问题描述】:
首先让我说,我知道饼图是准确显示数据的糟糕方法,但我被要求将其作为报告的一部分制作。我有一个数据集,其中包含有关位置、伤害类型以及多个个人数据字段的信息。我想显示在每个位置发生的每种伤害的百分比的饼图。我已经尝试过,其中 facility2 是通过 ServiceSite.x 拆分完整数据框创建的 52 个元素的列表。这部分有效,但创建的饼图仅包含一种“初始类型”的计数。
summarized_list <- lapply(facility2, function(x){
x %>% group_by(InitialType) %>% summarize(length(InitialType))
})
pies <- function(z) {
ggplot(z, aes(x = "", fill = length(InitialType)))+
geom_bar(width = 1, na.rm = TRUE)+
coord_polar(theta = "y")
}
lapply(summarized_list, pies)
这也部分有效,并且会很完美,但只打印出 13 个图表而不是全部 52 个
pies2 <- function(x) {
ggplot(x, aes(x = "", fill = InitialType))+
geom_bar(width = 1, na.rm = TRUE)+
coord_polar(theta = "y")+
xlab(x$ServiceSite.x)
}
lapply(facility2, pies2)
并给出这个错误
Error: Aesthetics must be either length 1 or the same as the data (1): x, fill
我知道第一种方法在提供正确计数的同时完美地拆分数据,我只是无法弄清楚我需要在 ggplot() 中更改什么以显示每个设施的所有伤害类型。如果可能的话,我还想添加一个百分比标签,或者至少只是计数。
Sample data:
ServiceSite.x InitialType
2 Dermatitis
2 Diabetic
2 Pressure Injury
2 Pressure Injury
3 Pressure Injury
3 Other
3 Laceration
3 Other
4 Pressure Injury
4 MASD
4 Blister (Non-Pressure)
4 Skin Tear
4 Pressure Injury
5 Skin Tear
5 Other
5 Contusion
5 Skin Tear
5 Surgical(Non-Healing)
5 Pressure Injury
6 Pressure Injury
1 Pressure Injury
6 Pressure Injury
6 MASD
1 Surgical(Non-Healing)
1 Pressure Injury
1 Skin Tear
1 Contusion
facility2 <- split(full, full$ServiceSite.x)
这两个变量都是因子。
【问题讨论】:
-
您的第二种方法似乎适用于您提供的示例数据。您是否确定了数据引发错误的设施有何不同?
-
@MikkoMarttila 据我所知,没有什么不同。唯一可能改变的是,并非所有设施都会记录每种类型的伤害,但这似乎不是打印的问题。
-
也许您可以包含一些失败的数据?否则真的不可能进一步诊断。