2017-10-02 6 views
0

異なる大陸に分布する商品(リンゴ、バナナ、ジャガイモなど)があるとします。 ggplot2パッケージのファセットバサルトを介して大陸に分布を可視化し、これらの商品(「stuff」フィールドに続くものと呼ばれる)はx軸に表示される要因として機能します。データに示されるように、各大陸には独自の品目がありますが、特定の商品は2つ以上の大陸で共通(バナナ)になることがあります。ここに短い形式のデータ例があります。フィールド「中」と「巨人」は、市場をさらに細分化して、物を中と大きなサイズ(別々の色でプロット)に分けます。R:ggplot2のファセットごとに固有のファクタを描画するbarchart

data<-read.csv(text="continent,stuff,average,giant 
North America,apples,20,30 
North America,bananas,25,32 
Europe,bananas,15,25 
Europe,potatoes,10,20 
Europe,mosquitoes,13,17 
Asia,snakes,26,35 
Asia,snails,7,15 
Asia,pandas,10,20") 

まず、geom_col()とファセット技術を経由して、それを長い形式にデータを削減し、次のプロット:

library(dplyr) 
library(tidyr) 
library(ggplot2) 
data.tidied<-data %>% 
    gather(key=size, value=val,-continent,-stuff) 
ggplot(data.tidied,aes(x=stuff,y=val,fill=size))+ 
geom_col(position="dodge")+ 
facet_grid(~continent)+coord_flip() 

barchart with shared factors across facets

もののすべての要因は、すべての大陸全体で整列している、けれどもそれらのほとんどは必要ではないので、多くのギャップがあります。しかし、北米やヨーロッパではカタツムリは必要ありません。この分野をアジアの面だけに持つのは当然です。 (物事をより明確にするために、リンゴ/バナナ/ジャガイモは、ヨーロッパにはカリフォルニアを持っていない大陸固有の地理的地域と考えるかもしれません。だから:ggplot(または任意の代替)のfaceting技術を使用してこの状況を表示する方法は?それは、どのようにして各ファセットに固有の要素セットを描くのですか?

答えて

2

facet_gridの代わりにfacet_wrapを使用し、scales = "free_y"と指定できます(軸を反転させたときにfree_yにする必要があります)。しかし、それは私の意見では、少し奇妙に見えるチャートになります。

data %>% 
    gather(size, val, -continent, -stuff) %>% 
    ggplot(aes(stuff, val)) + 
    geom_col(aes(fill = size), position = "dodge") + 
    facet_wrap(~continent, scales = "free_y") + 
    coord_flip() 

enter image description here

関連する問題