我对R中的饼图有疑问 我想要一个用于使用过的操作系统的饼图。但是,有许多系统的份额低于1%,我想从图中排除它们。当然我可以在绘图之前从数据框中删除它们,但我想知道ggplot函数中是否有更好的替代方案来仅绘制前三个操作系统。
以下数据框作为输入和我正在使用的代码:
数据帧:
operatingSystem | sessionsPercent
Android | 0.620
iOS | 0.360
Windows | 0.010
Blackberry | 0.001
...
代码:
p <- ggplot(df, aes(x="", y=sessions, fill = operatingSystem))
p + geom_bar(width = 1, stat = "identity") +
geom_text(aes(label = percent(data$sessions)), position = position_stack(vjust = 0.5), color = "white", size = 8) +
coord_polar(theta="y", direction = -1) +
theme_void()
有人有想法吗?
答案 0 :(得分:0)
无需从数据框中删除这些行,您只需在数据的子集上运行ggplot命令即可。顺便说一句,我认为你的意思是某些操作系统的份额低于1%,不低于0%?另外,请不要说出名字 data.frame“data”,因为它可能会破坏utils包中的一些函数。最好使用df例如。
我想你可以试试这个:
library(ggplot2)
library(scales)
df <- read.table(text = 'operatingSystem sessionsPercent
Android 0.620
iOS 0.360
Windows 0.010
Blackberry 0.001', header = TRUE)
p <- ggplot(df[df$sessionsPercent %in% head(df$sessionsPercent, 3),], aes(x="", y=sessionsPercent, fill = operatingSystem))
p + geom_bar(width = 1, stat = "identity") +
geom_text(aes(label = percent(head(df$sessionsPercent, 3))), position = position_stack(vjust = 0.5), color = "white", size = 8) +
coord_polar(theta="y", direction = -1) +
theme_void()
百分比现在不能达到100%,但如果你想要,你可以将percent()命令中的参数除以0.99(因为具有最高百分比的3 OS的总百分比是99%)。