我是R的新手,但我正在尝试使用R中的facet_grid
包进行ggplot
,为了更好的数据可视化,我想插入值的百分比在列groupings
的每个象限中,如下图所示:
可以是每个象限或图例中的一个或另一个。
我的代码是下面的
ggplot(df1_final,aes(x=revenue,y=visits,col=groupings)) +
geom_jitter(alpha=I(1/2)) +
xlim(c(0,20000)) +
facet_grid(group_lvl_1_visits ~ group_lvl_1_revenue)
有人可以帮我吗?
编辑:这两种解决方案对我帮助很大,非常好。
答案 0 :(得分:3)
以下是一种方法:
library(ggplot2)
ggplot(mpg, aes(displ, hwy)) +
geom_point() +
facet_wrap(~class, nrow = 4) ->
p
p + geom_text(
data = setNames(as.data.frame(prop.table(table(mpg$class))),c("class", "lab")),
mapping = aes(label = scales::percent(lab)),
x = 4,
y = 40
)
或,facet_grid
:
p <- ggplot(mpg, aes(displ, cty)) + geom_point()
p <- p + facet_grid(drv ~ cyl)
p + geom_text(
data = setNames(as.data.frame(prop.table(table(mpg$drv, mpg$cyl)), stringsAsFactors = F), c("drv","cyl","lab")),
mapping = aes(label = scales::percent(lab)),
x=4.5,
y=30
)
答案 1 :(得分:2)
这是一个tidyverse +标签传奇解决方案:
library(ggplot2)
library(dplyr)
library(scales)
group_by(mpg, cyl, drv) %>%
mutate(color=sprintf("%s-%s",cyl,drv)) %>%
ungroup(mpg) -> mpg
gg <- ggplot(mpg, aes(displ, cty))
gg <- gg + geom_point(aes(color=color))
gg <- gg + facet_grid(drv ~ cyl)
count(mpg, color) %>%
ungroup() %>%
mutate(pct=percent(n/sum(n)),
lab=sprintf("%s (%s)", color, pct)) -> pct_df
gg <- gg + scale_color_discrete(name="Title", labels=pct_df$lab)
gg