2017-01-24 10 views
0

ggplot2パッケージのfacet_gridlabeller引数(と関数)を使用したいので、1つの軸上の複数のラベルが互いに隣り合っているのではなく、互いに重なるようにします。facet_grid labeller 2行

以下の再現性の例では、私は 「ABC株式会社\ nAAAAAAAA」と「DEF PLC \ nAAAAAAAA」つまり、同じ「ラベルボックス」で、その下のセクターで会社名を言うためにラベルを取得したいと思いますし、 'GHI LLP \ nBBBBBBBBB'は、y軸ファセットラベルです。理想的には、その下にある複数の追加のラベル記述についてこれを拡張したいと思います。

require(ggplot2) 
require(reshape2) 
require(dplyr) 

dat <- data.frame(date=Sys.Date()+seq(1000), 
        stock_px_1=100*cumprod(c(1,1+rnorm(999,0.00003,0.0004))), 
        stock_px_2=500*cumprod(c(1,1+rnorm(999,0.00001,0.0003))), 
        stock_px_3=10*cumprod(c(1,1+rnorm(999,0.00005,0.0005)))) 

stock_info <- data.frame(px_name=paste0('stock_px_',seq(3)), 
         stock_id=c('a1b2c3','d4e5f6','g7h8i9'), 
         sector=c('AAAAAAAA','AAAAAAAA','BBBBBBBBB'), 
         long_name=c('ABC Ltd','DEF plc','GHI LLP')) 


dat_melted <- melt(dat,id.vars='date',variable.name='px_name',value.name='price') 

joined_dat <- left_join(dat_melted,stock_info,by='px_name') 

ggplot(joined_dat,aes(x=date,y=price,color=px_name))+ 
    geom_path()+ 
    facet_grid(long_name+sector~.,scales='free_y')+ 
    theme(strip.text.y=element_text(angle=0))+ 
    theme(legend.position='none') 

答えて

1

一つの方法は、単純に組み合わせたラベルを保持して新しい列を追加することができます

joined_dat$combinedlabel=paste0(joined_dat$long_name,"\n",joined_dat$sector) 

そして使用は、ファセットに列を言った:

ggplot(joined_dat,aes(x=date,y=price,color=px_name))+ 
    geom_path()+ 
    facet_grid(combinedlabel~.,scales='free_y')+ 
    theme(strip.text.y=element_text(angle=0))+ 
    theme(legend.position='none') 
関連する問題