0

パッケージを使用してラインとバーチャットをプロットしようとしていggplot2ますが、関数を使用すると2つの異なるy軸を取得するのは難しいようfacet_grid()です...

現在のプロットに、データ フレーム内の各製品の頻度 (変数 Freq) を含む棒グラフを追加したいと思います。どんな助けでも本当に素晴らしいでしょう!!

temp = data.frame(Product=as.factor(c("L","P","41","43")),
              Freq = c(0.2,0.8,0.7,0.3),
              rate = c(14,17,12,20),
              var= c("QUAL","QUAL","OCCU","OCCU"))

temp %>%  ggplot() + theme_grey(base_size=20) + 
geom_line(aes(x=Product, y=rate, group=var))+  
geom_point(aes(x=Product, y=rate, group=var))+ 
geom_label( aes(x=Product,y=rate,label=paste0(rate,"%") ))  +
  facet_grid(.~ var, scales = "free") +
 theme(legend.position="none", axis.text.x=element_text(angle=45, vjust=0.1)) -> p2

画像

4

1 に答える 1

1

1つの代替手段は、使用することですgrid.arrange{gridExtra}

library(gridExtra)

### 1. create a plot function

plotfunc <- function(Data, xxx , ymin, ymax) {

   ggplot(data=subset(temp, var==xxx)) + theme_grey(base_size=20) + 
    geom_line(aes(x=Product, y=rate, group=var))+  
    geom_point(aes(x=Product, y=rate, group=var))+ 
    geom_label( aes(x=Product,y=rate,label=paste0(rate,"%") ))  +
    facet_grid(.~ var, scales = "free") +
    theme(legend.position="none", axis.text.x=element_text(angle=45, vjust=0.1)) +
    ylim(ymin, ymax) 
    } 

### 2. Generate the plots with different axis limits
occuplot <- plotfunc(temp, "OCCU", 10, 20)
qualplot <- plotfunc(temp, "QUAL", 12, 18)

### 3. Arrange the separate plots into one single chart
grid.arrange( occuplot, qualplot, nrow=1, ncol=2) 

ここに画像の説明を入力

于 2016-06-03T16:16:41.410 に答える