我想在labeller
包的facet_grid
中使用ggplot2
参数(和函数),以便一个轴上的多个标签彼此相对,而不是在旁边彼此。
在下面的可重复示例中,我想让标签在相同的标签框中标明公司名称及其下方的部门。即 ' ABC Ltd \ 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')
答案 0 :(得分:2)
您可以使用 label_wrap_gen
选项,如下所示
p <- sample_data %>% ggplot(aes(x= Data, fill=Category)) + geom_density() +
facet_grid(Name~Category, labeller = label_wrap_gen(width=10)) +
xlab("Data (Unit)")
答案 1 :(得分: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')