今更ながら、ggplot2を使って積み上げグラフを描いてみました。
sales.ldf <- melt(sales.tbl, value.name = "売上") #長いデータフレームに変換
qplot(data = sales.ldf, x = 年, y = 売上, fill = 商品,
geom = "bar", stat = "identity", position = "stack") +
guides(fill = guide_legend(reverse = TRUE)) #判例の順番を逆転
qplot(data = sales.ldf, x = 年, y = 売上, fill = 商品,
geom = "bar", stat = "identity", position = "stack") +
guides(fill = guide_legend(reverse = TRUE)) #判例の順番を逆転
|
これは、我らリーマンがよく描くタイプのグラフです。でも、私、故あって商品をA,X,B,Yの順番に積み上げたいのです。x軸の順番を並べ替える時は、factorの水準を変えればよかったので、積み上げ順を変更するのにも、水準を変えれば良いだろう思いました。
sales.ldf$商品 <- factor(sales.ldf$商品, levels = c("商品A","商品X","商品B","商品Y"))
として、qplot(...)を実行すると、
ありゃりゃ?凡例の順番は変わっているのに、積み上げ順は元のままではないですか。商品の水準の順番と思い込んでいたので、ハマることしばし。
ということで、なんのあてもなく長いデータフレームを商品順に並べてみました。
sales.ldf <- arrange(sales.ldf, 売上) #dplyrパッケージを使って
と長いデータフレームを売り上げ順に並び替えてみて描いてみると、意図していた積み上げ順になりました。
|
というわけで、1番目の項目のところだけ並び替えれば任意の順番に積み上げられるわけですね。2番目以降の順番は無視。
|
0 件のコメント:
コメントを投稿