修改每个面中的 x 轴标签 [英] Modify x-axis labels in each facet

查看:42
本文介绍了修改每个面中的 x 轴标签的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这个图表 - 我想在每个标签上添加文本 N=xx 来表示观察次数.我知道如何做到这一点,而且我已经在没有分面的图表上做到了这一点.

I have this chart - I would like to add to each label the text N=xx to denote the number of observations. I know how to do this and I have done that on charts with no facets.

当我在多面图表上尝试时,它不起作用,(我在所有 3 个图表上的开盘勾上得到相同的 N,在受限图表上得到相同的 N,等等)

When I tried that on the faceted chart it did not work, (I got the same N on the open tick on all 3 charts, the same N on the Restricted, etc.)

我希望有人能指出解决方案,我如何控制给定方面的元素?

I hope someone can point the way to a solution, how do I control the elements on a given facet?

library(ggplot2)
library(scales)

stat_sum_single <- function(fun, geom="point", ...) {
  stat_summary(fun.y=fun, fill="red", geom=geom, size = 5, shape=24)
}

set.seed(1)
data1 <- data.frame(Physicians_In=sample(1:3,100,replace=T),Physicians_Out=sample(1:3,100,replace=T),share=runif(100,0,1))
data1$Physicians_In <- factor(data1$Physicians_In,levels=c(1,2,3),labels=c("Open","Restricted","Closed"))
data1$Physicians_Out <- factor(data1$Physicians_Out,levels=c(1,2,3),labels=c("Open","Restricted","Closed"))

access_ch3 <- ggplot(data1,aes(x=Physicians_In,y=share,fill=Physicians_In))+geom_boxplot()+stat_sum_single(mean)
access_ch3 <- access_ch3 +geom_jitter(position = position_jitter(width = .2),color="blue")+theme_bw()
access_ch3 <- access_ch3 + theme(legend.position="none") +scale_y_continuous("Gammagard Share",labels=percent)
gpo_labs5 <- paste(gsub("/","-
",names(table(data1$Physicians_Out)),fixed=T),"
(N=",table(data1$Physicians_Out),")",sep="")
access_ch3 <- access_ch3 + scale_x_discrete("Physician Access (In Hospital)",labels=gpo_labs5)
access_ch3 <- access_ch3 +facet_grid(.~Physicians_Out,labeller=label_both)
access_ch3

我尝试创建 9 个标签并将该向量传递给 scale_x_discrete 元素,该元素只是回收了前 3 个,因此它也没有解决问题.

I tried creating the 9 labels and passing that vector to the scale_x_discrete element, that just recycled the first 3, so it also did not solve the issue.

推荐答案

这不是你想要做的,但我认为这会有所帮助(至少是一个好的开始)

It is not exactly what you want to do , but I think this can be helpful ( at least a good start)

library(ggplot2)
library(plyr)
data1 <- ddply(data1,.(Physicians_Out,Physicians_In),transform,label = length(share))
ggplot(data1,aes(x=Physicians_In,y=share,fill=Physicians_In))+ 
    geom_boxplot() + 
    stat_sum_single(mean) +
    facet_grid(.~Physicians_Out,labeller=label_both,scales='free_x') +
    stat_summary(fun.y=min,aes(label=paste0('N=',label)),geom='text',col='blue',cex=5)

这篇关于修改每个面中的 x 轴标签的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆