我使用ggplot2库创建了一个饼图,如下所示:
ggplot(dat,
aes(x = factor(""), fill = workers) ) +
geom_bar() +
coord_polar(theta = "y") +
scale_x_discrete("")
Run Code Online (Sandbox Code Playgroud)
问题是数字 ( count) 显示为2e+05。我怎样才能将它们显示为20000?
更新:
dat <- data.frame(workers=c("Q8","A2","S1","A2","A2","S1"))
Run Code Online (Sandbox Code Playgroud)
您可以使用它scales::comma来处理这个(并且也可以轻松地制作一个可重现的示例,即使有大量数据):
library(ggplot2)
dat <- data.frame(
workers = c(
rep("Q8", 100000),
rep("A2", 200000),
rep("S1", 200000)
)
)
ggplot(dat, aes(x = factor(""), fill = workers) ) +
geom_bar() +
coord_polar(theta = "y") +
scale_x_discrete(name="") +
scale_y_continuous(label=scales::comma) +
theme_bw() +
theme(panel.grid=element_blank()) +
theme(panel.border=element_blank()) +
theme(axis.ticks=element_blank())
Run Code Online (Sandbox Code Playgroud)
产生这种怪物:

请注意,您真的不应该显示“y”轴编号,因为它们在此上下文中没有意义,并且应该直接标记饼图或将值 # 添加到实际的图例标签。
但是,我可以建议转向不同的vis:
library(waffle)
library(dplyr)
count(dat, workers) %>%
mutate(trim=n/10000) -> df2
parts <- setNames(unlist(df2$trim), df2$workers)
waffle(parts, rows=4, title="Count", xlab="Each square represents 10,000 workers")
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 ggplot2 的 github 版本,则需要执行以下操作:
waffle(parts, rows=4, title="Count", xlab="Each square represents 10,000 workers") +
scale_fill_manual(name="workers",
values=c(Q8="#e41a1c", A2="#377eb8", S1="#4daf4a"),
na.translate=FALSE)
Run Code Online (Sandbox Code Playgroud)
因为它与 CRAN 版本有一些不同的行为(waffle当新的 ggplot2 在 CRAN 上时,pkg 将更新)。