R中关于显示标签的几个问题

1、使用统计变换summary后的标签值得显示,统计变换后需要用到衍生变量来显示变换后的统计值

df<-data.frame(
  x=c(3,1,5,3),
  y=c(2,4,6,10),
  label=c('a','a','a','b')
)  

ggplot(data=df,aes(x=as.character(x),y=y))+geom_bar(fun.y=sum,stat='summary')+
  
  ####非常重要,变换后在text里的y的统计值,..y..,..x..
  geom_text(stat='summary',fun.y=sum,aes(label=..y..,vjust=-2))

2、bar使用并排显示时,标签显示位置问题。如果不做任何处理,还是使用上边的数据

ggplot(data=df,aes(x=factor(x),y=y,fill=factor(label)))+geom_bar(stat='identity',position='dodge')+
  geom_text(aes(label=y,hjust=0.3))
 

显示

R中关于显示标签的几个问题_第1张图片

解决方法:

ggplot(data=df,aes(x=factor(x),y=y,fill=factor(label)))+geom_bar(stat='identity',position='dodge')+
  geom_text(aes(label=y,hjust=0.3),position = position_dodge(0.9))



3、在原始图上显示最大最小值的问题,


先获取数据源

sql<-c(
' select cust_name_cn,yyyymm as ds,gmv,amplitude,rn
  from icbubi.dwa_en_ftrd_mon_cust_gmv_d 
  where ds=max_pt(\'icbubi.dwa_en_ftrd_mon_cust_gmv_d\') and rn<=100
'
,
'select 
x0.cust_name_cn
,x1.ds
,x0.gmv
,x0.rn
from  icbubi.dwa_en_ftrd_mon_cust_gmv_d x0 join icbubi.tdl_rank_02 x1
on x0.cust_id=x1.cust_id and x1.ds=x0.yyyymm and  x0.ds =20160920  
'
,
'select
x0.cust_name_cn
,x0.gmv
,x1.rn
from icbubi.dwa_en_ftrd_cust_d x0 join icbubi.dwa_en_ftrd_mon_cust_gmv_d x1
on x0.cust_name=x1.cust_name_cn
where x0.ds=20160920
and x1.ds=20160920
'
)

d0<-exec_sql(sql[1])
d00<-exec_sql(sql[2])
d000<-exec_sql(sql[3])

3.1 在单个图上显示极值

dx<-d0[as.numeric( d0$rn)==1,]
dxmax<-data.frame(ds<-c(levels(reorder(dx$ds,-dx$gmv))[1]),gmv<-c(max(dx$gmv)))
colnames(dxmax)<-c('ds','gmv')
dxmin<-data.frame(ds<-c(levels(reorder(dx$ds,dx$gmv))[1]),gmv<-c(min(dx$gmv)))
colnames(dxmin)<-c('ds','gmv')
px<-ggplot(data=dx,aes(x=ds,y=gmv,group=1))
px+geom_line(color='red',size=1)+
  geom_text(data=dxmax,color='red',aes(x=ds,label=gmv,vjust=-1.5))+
  geom_text(data=dxmin,color='green',aes(x=ds,label=gmv,vjust=-1.5))+
  geom_point(data=dxmax,color='red',aes(x=ds,y=gmv),size=8)+
  geom_point(data=dxmin,color='green',aes(x=ds,y=gmv),size=8)+
  annotate('text',x=4,y=25,label=paste0('max value=',dxmax$gmv[1]))+
  annotate('text',x=4,y=22,label=paste0('min value=',dxmin$gmv[1]))+
  labs(x='日期',y='gmv',title='客户gmv趋势')+
  theme(


    plot.title=element_text(family="STKaiti",size=15,face='bold')
    ,axis.title=element_text(family="STKaiti",size=10)
    ,axis.text.x=element_text(angle = 30,size=8,color='black')
    ,title=element_text(family="STKaiti",size=5)
    ,strip.text=element_text(family="STKaiti",size=10,color='black')


  )

显示


3.2 在facet下显示

 在facet情况下,先要统计最大最小值得数据框(分开),但是没有找到办法能够使用同一个数据框

##开始facet test
dx<-d0[as.numeric( d0$rn)<=20,]
dxmax<-d00[as.numeric( d00$rn)<=20,]
dxtotal<-d000[as.numeric( d000$rn)<=20,]
px<-ggplot(data=dx,aes(x=ds,y=gmv,group=cust_name_cn))
px+geom_line(color='red',size=1)+
  facet_wrap(~cust_name_cn,scales='free',ncol=3)+
  geom_point(data=dxmax,color='red',aes(x=ds,y=gmv,group=cust_name_cn),size=3)+
  geom_text(data=dxmax,color='red',size=3,aes(x=ds,y=gmv,label=round(gmv,1),group=cust_name_cn,vjust=2,hjust=2))+
  labs(x='日期',y='gmv',title='客户gmv趋势')+
  theme(
    plot.title=element_text(family="STKaiti",size=15,face='bold')
    ,axis.title=element_text(family="STKaiti",size=10)
    ,axis.text.x=element_text(angle = 30,size=8,color='black')
    ,title=element_text(family="STKaiti",size=5)
    ,strip.text=element_text(family="STKaiti",size=10,color='black')

    
  )

显示:


facet情况下有两个问题没有解决:1、使用同一个数据源显示极值、2、和3.1一样使用annotate

你可能感兴趣的:(R)