私はfacet_wrap()
それを使用してそれを行うに考えることができる他の二つの方法があります
- を使用しています。
ggplot2
中(単純なアプローチ)
- (エラーにちょうどより多くなりやすい、まだ比較的簡単な)各企業のためのあなたのデータフレームを倍増
いずれかの方法で、私たちはあなたの例を再現できるように、のあなたの2つのデータフレームを作成し直してみましょう:
Quarter <- seq(2011, 2012, by = .25)
CompA <- as.integer(runif(5, 5, 15))
CompB <- as.integer(runif(5, 6, 16))
CompC <- as.integer(runif(5, 7, 17))
df1 <- data.frame(Quarter, CompA, CompB, CompC)
次に、A社の "セグメントの売上高" のデータフレーム:
まず "総会社の収入" データフレームを作成します
CompA_Footwear <- as.integer(runif(5, 0, 5))
CompA_Apparel <- as.integer(runif(5,1 , 6))
CompA_Wholesale <- as.integer(runif(5, 2, 7))
df2 <- data.frame(Quarter, CompA_Footwear, CompA_Apparel, CompA_Wholesale)
は、今、私たちは、私たちは今、グラフをほとんど準備ができているreshape2
require(reshape2)
melt.df1 <- melt(df1, id = "Quarter")
melt.df2 <- melt(df2, id = "Quarter")
df <- rbind(melt.df1, melt.df2)
からするmelt()
を使用してggplot2
ためのより認識の何かを、あなたのデータを再arrageます。それが唯一のA社
CompA.df2 <- df[grep("CompA_", df$variable),]
ための「セグメントの売上高」が含まれるように例のために、私は、「A社」
annotate()
サブセットデータを使用して
に焦点を当てます
これは、すべてのセグメント収益が「CompA_ *」で始まるコードであることを前提としています。あなたはあなたのデータに従ってサブセットを作らなければならないでしょう。
今プロット:
require(ggplot2)
ggplot(data = CompA.df2, aes(x = Quarter, y = value,
group = variable, colour = variable)) +
geom_line() +
geom_point() +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
facet_wrap(~variable) + # Facets by segment
# Next, adds the total revenue data as an annotation
annotate(geom = "line", x = Quarter, y = df1$CompA) +
annotate(geom = "point", x = Quarter, y = df1$CompA)
基本的に、私たちはこれに主要な欠点は、の欠如であるA社のために独自の「全社収益の」データフレームからのラインとポイントをグラフに注釈をしています伝説

第2のアプローチは、
方法のfacet_wrap(あなたのデータを複製するすべての値
の凡例を作成します)作品、我々は同じ面を定義する必要があります各ファセット上の意図されたプロットされたラインのそれぞれについての変数。そこで、それぞれの「セグメント収益」レベルごとに総収益を再現し、これらのペアをまとめてグループ化します。
我々は合計A社の収益を分離しようとしていると、A社
CompA.df1 <- df[which(df$variable == "CompA"),] # Total Company A Revenue
CompA.df2 <- droplevels(df[grep("CompA_", df$variable),]) # Segment Revenue of Company A
のセグメント別売上高は、今どのように基づいてA社の総売上データフレームを繰り返して、上記と同じデータフレームを使用して「セグメント収益」
rep.CompA.df1 <- CompA.df1[rep(seq_len(nrow(CompA.df1)), nlevels(CompA.df2$variable)), ]
ため、我々は持っている多くのレベルあなたはNA's
またはNaN's
0123を持っている場合、これはエラーになりやすいかもしれませんここで、繰り返しデータフレームをマージし、ファセット変数(ここではfacet.var)を追加してこれらをペアにします。
CompA.df3 <- rbind(rep.CompA.df1, CompA.df2)
CompA.df3$facet.var <- rep(CompA.df2$variable,2)
これでグラフ作成の準備が整いました。あなたはまだgroup = variable
を定義することができますが、今回は私たちはあなたが見ることができるように、新たにfacet.var
require(ggplot2)
ggplot(data = CompA.df3, aes(x = Quarter, y = value,
group = variable, colour = variable)) +
geom_line() +
geom_point() +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
facet_wrap(~facet.var)
を作成し、我々は今、私たちの「総収入」は伝説に追加したにfacet_wrap()
を設定します:

そのプロットは本当に美しいです
あなたは本当に最小限の[再現可能な例]を提供する必要があります(http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)(部分データと... i非常に役に立たない)。あなたがすでに試したコードを表示して、どこに止まっているのか正確に説明してください。それぞれの面ではどういうことでしょうか?最初の表のCompA列は、2番目の表のすべてのセグメントの合計にすぎませんか? – MrFlick
@MrFlick私の主な問題は、私のデータが2つの異なるテーブルから来ているという事実に問題があることです。私はそれらを組み合わせてみましたが、それは本当に私を助けてくれていません。理想的には、私は各面を全体のデータと別のセグメントのグラフにすることができるようにしたいと思います。私はちょうど各社のすべてのグラフのグリッドを作成するために探しています。そして、いいえ、最初の表の列は必ずしも2番目の表のセグメントの合計ではありません。 –
複数のレイヤー/ジオメトリを追加することができ、それぞれ異なるデータセットからそれぞれを取り出すことができます。それには問題はないはずです。 – MrFlick