2017-08-01 4 views
0

私はggplot2で関数facet_gridを見つけました。問題は:私は6カ国(列HC)と世界中のフライトの目的地リストを持っています。私のデータは次のようになります。facet_grid内のggplot2でより高い値を表示するには

  HC Reason Destination freq  Perc 
     <chr> <chr>  <chr> <int>  <dbl> 
1 Germany Study  Germany  9 0.3651116 
2 Germany Work  Germany  3 0.1488095 
3 Germany Others  Germany  3 0.4901961 
4 Hungary Study  Germany 105 21.4285714 
5 Hungary Work  Germany 118 17.6382661 
6 Hungary Others  Germany 24 5.0955414 
7 Luxembourg Study  Germany 362 31.5056571 

は、それぞれの国で唯一トップ10の宛先を表示し、機能のfacet_gridを使用する方法はありますか?イムは、このように散布図を作成しようとしている:

このグラフを生成
Geograp %>% 
    gather(key=Destination, value=freq, -Reason, -Qcountry) %>% 
    rename(HC = Qcountry) %>% 
    group_by(HC,Reason) %>% 
    mutate(Perc=freq*100/sum(freq)) %>% 
    ggplot(aes(x=Perc, y=reorder(Destination,Perc))) + 
    geom_point(size=3) + 
    theme_bw() + 
    facet_grid(HC~Reason) + 
    theme(panel.grid.major.x = element_blank(), 
     panel.grid.minor.x = element_blank(), 
     panel.grid.major.y = element_line(colour = "grey60", linetype = "dashed")) 

enter image description here私は、y軸にoverplottingを避けたいです。前もって感謝します!!!

答えて

1

をあなたは= 10 <をランク付けして国別の各宛先のランク、その後ggplotコールで選択した行を示す変数を作成することができ、例えば

ggplot(data = mydata[rank <= 10, ], ....) 

PS:現在、パイプを使用してデータとプロットデータをすべて1行に作成しています。私は、データの作成とプロットの手順を分けます。

0

あなたのデータを正しい形式(dput()をチェックしてください)で投稿していないので、サンプルデータだけを使用しました。お使いの場合には、それはFREQになります私はGRP変数で、この場合にグループ化されたdplyrパッケージ(group_by(grp)、あなたの場合には、それはである)とx変数でソートされている選択された上位10行(...top_n(n = 10,...)(wt = xを使用)及び(ただ)この場合の散布図でさらにそれをプロット:

library(dplyr) 
set.seed(123) 
d <- data.frame(x = runif(90),grp = gl(3, 30)) 

d %>% 
group_by(grp) %>% 
top_n(n = 10, wt = x) %>% 
ggplot(aes(x=x, y=grp)) + geom_point() 
+0

あなたの答えをありがとう!私の問題は、各国(列HC)に独自の「トップ10の目的地」があることです。関数top_nをfaced_gridと統合する簡単な方法はありますか? –

+0

あなたは何を意味するのか分かりません.HCの列は自分のトップ10の目的地ですか?あなたのテーブルにはどこが表示されていますか?どのようなトップ10の目的地を表示しますか? –

+0

私は、HCは旅行の起源国であり、行き先は行き先国であることを意味します。したがって、各「出身国」には「トップ10の目的地」があります。しかし、あなたの答えは私に良いスタートポイントを与える!!ありがとうございました! –

関連する問題