2016-10-21 1 views
0

2つのプロットを重ねて表示したい。これらのプロットは両方とも同じX軸とY軸を共有します。唯一の違いは、最初のプロットは棒グラフで、2番目のプロットは折れ線グラフであることです。系列の色分けが凡例で一致するように2つのプロットをマージする

library("ggplot2") 

p1 <- ggplot(result_a, aes(x=type,y=as.numeric(num_excluded),fill=as.factor(year),width=.5)) + 
    geom_bar(position = "stack", stat="identity")+ 
    coord_flip() 

p1 <- p1 + guides(fill=guide_legend(title="Legend:")) + 
    scale_fill_brewer(palette="Set1") 


p2 <- ggplot(result_a, aes(x=type,y=as.numeric(total), 
          group=as.factor(year),color=as.factor(year), 
          width=.5)) + 
    geom_line()+geom_point()+ 
    coord_flip() 

にはどうすればいいの線やバーの色が一致していること(すなわち凡例に与えられた色の解釈は両方のラインやバーを参照)ので、それらを一緒に置くことができますか?

更新:

dput(result_a)

structure(list(year = c(2011, 2011, 2011, 2012, 2012), type = c("AAA", "BBB", "AAA","BBB", "AAA"), num_excluded = c(5, 2, 4, 15, 2), total = c(100,20,500,300,100))) 
+0

あなたが '' dput(result_a)を投稿することができますか? –

+0

[This](http://stackoverflow.com/questions/40048002/represent-geom-line-and-geom-bar-in-the-same-plot)が役立つ可能性があります。色については、それらを同じパレットに手動で設定する必要があります。 – Haboryme

+0

@MikeyMike:完了。 – FiofanS

答えて

2

あなたは、このようなSTHを意味していますか?

ggplot(result_a) + 
    geom_bar(aes(x = type, y = as.numeric(num_excluded), 
       fill = as.factor(year), width=.5), position = "stack", stat = "identity") + 
    geom_line(aes(x = type, y = as.numeric(total), 
        group = as.factor(year), color = as.factor(year), 
        width = .5), size = 2) + 
    coord_flip()+ 
    guides(fill = guide_legend(title = "Legend:")) + 
    scale_fill_brewer(palette = "Set1") + 
    scale_color_brewer(palette = "Set1", guide = FALSE) 

enter image description here

+0

ありがとう、マルタ。しかし、私はこれらのチャートを1つのプロットにマージしたい。その結果、p2の行はp1の上に表示されます(または、 'coord_flip()'を使用すると右に表示されます)。 – FiofanS

+0

@FiofanS、私は私の答えを編集しました。 – Marta

+0

はい、絶対に!ちょっとした細かいこと:伝説とその色を共有したいと思いました。両方のグラフに対応する1つの凡例を使用できますか? – FiofanS

関連する問題