R饼图只有前三个部分
R Pie Chart with only top three segments
我对 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()
有人有想法吗?
无需从您的数据框中删除这些行,您只需 运行 您的 ggplot 命令对数据的一个子集执行。顺便说一句,我想你的意思是一些 OS 的份额可能低于 1%,而不是低于 0%?另外,请不要点名
a 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 %).
我对 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()
有人有想法吗?
无需从您的数据框中删除这些行,您只需 运行 您的 ggplot 命令对数据的一个子集执行。顺便说一句,我想你的意思是一些 OS 的份额可能低于 1%,而不是低于 0%?另外,请不要点名 a 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 %).