2017-09-27 50 views
0

私は以下の入力データを持っています。X軸ラベルの順GGPLOT

sample_data <- data.frame(city = c("a", "b", "c","d", "a", "b", "c", "d"), value = c(10, 11, 17, 12, 13, 14, 11, 8), type = c(1,1,1,1,2,2,2,2), country = c("c1", "c2", "c1", "c1", "c2", "c2", "c1", "c1")) 

そして、データをタイプ別に分割するggplot内にプロットを作成したいので(2セットの棒グラフ)私は棒グラフの順序を一緒に色でグループ化したい。右側のチャートの下には、青色と赤色のバーが隣り合わせにグループ化されています。私は多くの変数を持っていますので、手動で動かすことはオプションではありません。私はチャートに使用されるコードは次の通りであった:

sample_data <- sample_data %>% 
    mutate(city2 = factor(city, levels=city[order(country)])) 
ggplot(sample_data) + 
    geom_col(aes(x=city2, y=value, colour=country, fill=country)) + facet_wrap(~type) 

enter image description here

+0

要素の順序を変更することができます。私はあなたの2番目の質問をよく理解していません。 – R18

+0

私は棒グラフを手動で移動する(変数が多いので)、国の色を一緒に自動的にグループ化する方法はありません。どの部分が分かりませんか? – user8491385

+0

'facet_wrap()'関数の 'country'によって' type'が変更されました。 'ggplot(sample_data)+ geom_col(aes(x =都市2、y =値、色=国、塗りつぶし=国))+ facet_wrap(〜国)' – R18

答えて

1

Iは異なるファセットに、同じ都市(x軸変数)が注文することを示唆している、異なる塗りつぶしの色に関連付けられてもよいことに注意します各ファセットで変数が異なる可能性があります。その場合、ファクターの順序を指定することはできません。

ここ&がプロットに偽のx軸を追加し、フィル変数に基づいて、x軸の順番を指定し、回避策です:

あなたの因子変数あなたのレベルを再定義
library(dplyr) 

sample_data <- sample_data %>% 
    group_by(type) %>% 
    arrange(country) %>% 
    mutate(x = row_number()) %>% 
    ungroup() 

ggplot(sample_data, 
     aes(x = x, y = value, fill = country, label = city)) + 
    geom_col() + 
    geom_text(aes(y = 0), nudge_y = -1) +  # fake x-axis 
    facet_wrap(~type) + 
    theme(axis.text.x = element_blank(),  # hide x-axis labels 
     axis.ticks.x = element_blank(),  # hide x-axis tick marks 
     panel.background = element_blank()) # white background for easier reading 

enter image description here