2017-12-19 20 views
0

ggplotを使用して2つのレイヤーでファセットマップを作成しようとしています。 fortifyを用いてデータフレームになっggplot:複数のレイヤーを持つファセットマップ

head(poijoin) 

NAME       LAT  LNG  level1 
ATM Bank Of America ATM @ WHC 38.92825 -77.01517 ShopService       
ATM Bank Of America ATM  38.90577 -77.03654 ShopService 
ATM Bank of America   38.91512 -77.02184 ShopService  
ATM USAA ATM @CVS    38.91343 -77.03590 ShopService 
ATM Bank of America ATM  38.95511 -77.02473 ShopService 

他方は道路網の形状ファイルから来て、:一つは、CSVから作成された緯度/経度座標を含むデータフレームからのものである

head(streets_df) 

     LNG  LAT order piece id group 
1 -77.02704 38.90253  1  1 0 0.1 
2 -77.02704 38.90303  2  1 0 0.1 
3 -77.02704 38.90303  3  1 0 0.1 
4 -77.02704 38.90304  4  1 0 0.1 
5 -77.02704 38.90326  5  1 0 0.1 

ggplot() + 
    geom_point(data = poijoin, aes(x = poijoin$LNG, y = poijoin$LAT)) + 
    geom_path(data = streets_df, aes(x = LNG, y = LAT, group = group)) 

Overlay

:それらを個別にプロットするので、それらを重ね合わせない、うまく動作します210

(非常にきれいな、私は知っているが、私はここでのコードの基本的な部分に固執しようとしているわけではありません。)

私も問題なくポイント層をファセットことができます。

ggplot() + 
    geom_point(data = poijoin, aes(x = poijoin$LNG, y = poijoin$LAT)) + 
    facet_wrap(~ poijoin$level1, nrow=3) 

facet

しかし、ストリートをベースマップとして各ファセットに追加したい場合、私は立ち往生しています。この:

ggplot() + 
    geom_point(data = poijoin, aes(x = poijoin$LNG, y = poijoin$LAT, color = poijoin$level1)) + 
    geom_path(data = streets_df, aes(x = LNG, y = LAT, group = group)) + 
    facet_wrap(~ poijoin$level1, nrow=3) 

は私を与える:

Error in `$<-.data.frame`(`*tmp*`, "PANEL", value = c(8L, 8L, 8L, 8L, : 
    replacement has 20983 rows, data has 200205 

2つのデータフレームは、要素(20983点、200205通り)の数が異なるので、私はエラーが起動すると確信しているが、私はまだドン私が間違っていることを手に入れません。任意のポインタが評価!

+0

私の答えを見てください。私はあなたの問題が '〜poijoin $ level1'であることをかなり確信しています – hrbrmstr

答えて

1

のは、再現可能な例を作ってみましょう:

library(hrbrthemes) 
library(tidyverse) 

はマップを取得:

st_map <- map_data("state") 

3グループといくつかのポイントを作成します。

set.seed(2017-12-19) 
data_frame(
    lat = sample(st_map$lat, 30), 
    lng = sample(st_map$long, 30), 
    level = rep(c("A", "B", "C"), 10) 
) -> points_df 

ggplot() + 
    geom_path(data=st_map, aes(long, lat, group=group), size=0.25) + # basemap 
    geom_point(data=points_df, aes(lng, lat, color=level)) +   # add our points layer 
    coord_map("polyconic") +           # for funsies 
    facet_wrap(~level) +            # NEVER use a fully qualified column unless you know what you're doing 
    labs(x=NULL, y=NULL) + 
    theme_ipsum(grid="") + 
    theme(axis.text=element_blank()) + 
    theme(legend.position="none") 

enter image description here

GG plot2は、ファセット間にベースマップを適用し、levelカテゴリの他のレイヤにファセットを適用します。

+0

ありがとう!これは実際に完全修飾列名でした。 – Carsten

関連する問題