2017-08-01 8 views
2

以下のサンプルデータセットに基づいて、2つのグラフを並べて並べて配置しようとしました。私はcowplotパッケージを使って試してみました。最終的な出力は本当に面倒だった。ggplot2 - 1つの凡例だけを残してグラフを並べる方法

両方のグラフに同じ要素が含まれているため、1つの凡例のみを表示し、下部を中央に並べる方法がありますか?

df <- data.frame(Year = c(rep(2012,5), rep(2016,5), 
          rep(2012,5), rep(2016,5), 
          rep(2012,5), rep(2016,5)), 
       Category = rep(c('A1','A2','A3','A4','A5'),6), 
       Group = rep(c('T1','T1','T1','T1','T1', 
          'T2','T2','T2','T2','T2', 
          'T3','T3','T3','T3','T3'),2), 
       Variable = runif(30,0,100)) 


plot2012 <- ggplot(df, aes(x = Group, y = Variable)) + 
    geom_bar(aes(fill = Category), stat = 'identity') + 
    ylim(0,500) + 
    labs(y = 'Variable') + 
    theme(legend.position = 'bottom', 
     legend.title = element_blank(), 
     axis.title = element_text(size = 10), 
     legend.text = element_text(size = 10), 
     axis.text = element_text(size = 10)) 

plot2016 <- ggplot(df, aes(x = Group, y = Variable)) + 
    geom_bar(aes(fill = Category), stat = 'identity') + 
    ylim(0,500) + 
    labs(y = 'Variable') + 
    theme(legend.position = 'bottom', 
     legend.title = element_blank(), 
     axis.title = element_text(size = 10), 
     legend.text = element_text(size = 10), 
     axis.text = element_text(size = 10)) 

その他の一般的なコメントの1のフォーマット/コードは、あなたがあなたのggplotコールにfacet_gridを追加することができます

+0

ところで、 'plot2012'と' plot2016'は同じです。 'df'を' Year'でサブセット化することを忘れたようです。 – www

答えて

3

歓迎されています。

ggplot(df, aes(x = Group, y = Variable)) + 
    geom_bar(aes(fill = Category), stat = 'identity') + 
    ylim(0,500) + 
    labs(y = 'Variable') + 
    # Generate plots as panel based on Year 
    facet_grid(. ~ Year) + 
    theme(legend.position = 'bottom', 
     legend.title = element_blank(), 
     axis.title = element_text(size = 10), 
     legend.text = element_text(size = 10), 
     axis.text = element_text(size = 10)) 
関連する問題