我使用ggplot2
库创建了一个饼图,如下所示:
ggplot(dat,
aes(x = factor(""), fill = workers) ) +
geom_bar() +
coord_polar(theta = "y") +
scale_x_discrete("")
问题是数字(count
)显示为2e+05
。如何将其显示为20000
?
更新
dat <- data.frame(workers=c("Q8","A2","S1","A2","A2","S1"))
答案 0 :(得分:4)
您可以使用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())
产生这种怪异:
请注意,您确实不应该显示“y”轴编号,因为它们在此上下文中没有意义,应该直接标记饼图切片或将值#s添加到实际图例标签。
但是,我可以建议转向另一种观点:
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")
如果您正在使用ggublot版本的ggplot2,则需要执行以下操作:
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)
因为它有一些不同于CRAN版本的行为(当新的ggplot2在CRAN上时,waffle
pkg将被更新。