3

2001年の国勢調査からの通勤フローデータがあります。ggplot2はデータフレーム入力のみを受け入れるためmelt、 Rパッケージを使用して「フラット」から「ロング」形式に変換し、起点と終点を同じ行に配置しました。reshape2

私の問題は、各行(行)に起点と終点があるように、各行のデータを2倍にすることになったということです。より簡潔な解決策があると確信しています。おそらく、さらに長い形式のデータが関係しています。

問題を具体的にするために、私はヘレフォードから小さな実例を作成しました。

# prepare data + packages
library(ggplot2)
library(ggmap)
flows.mini <- flows.ft[1:100,]
save(flows.mini, file="flows.mini.RData")
load("flows.mini.RData")
head(flows.mini)

 variable    X.1 value      X1.x     X2.x      X1.y     X2.y   n nr
1   00GANY 00GANY   605 -2.699389 52.06554 -2.699389 52.06554 605  1
2   00GANY 00GAPA   135 -2.742064 52.04099 -2.699389 52.06554 135  2
3   00GANY 00GAQD    25 -2.733890 51.93402 -2.699389 52.06554  25  3
    fcols
1    500+
2 100-500
3  10-100

最後の2行から実行した手順を再現するには、RDataファイル(2 kb)をダウンロードしてください:http://dl.dropbox.com/u/15008199/flows.mini.RDataそしてプロットを再現します。

ミニフロープロット

これは私がそれをプロットした方法です:

# plot flows by doubling-up
hford <- qmap("hereford", source = "stamen", maptype = "toner", extent = "normal", maprange=FALSE)

hford + geom_path(data= flows.mini, aes(x=c(X1.x,X1.y), y=c(X2.x, X2.y), 
      group = c(nr, nr), color = c(fcols,fcols), size= c(n,n)), 
      lineend = "round") +
  scale_size_continuous(range = c(0.05,5)) +
  scale_color_discrete(breaks = c("0-10", "10-100", "100-500", "500+")) + 
  coord_map() 

二重属性が非効率的であることに同意すると思います。それで、私の質問を言い換えると、どうすればそれらを削除できますか?

4

1 に答える 1

3

質問が本当に理解できるかどうかはわかりませんが、geom_segmentの代わりに使用するとgeom_path、「属性を2倍にする」という問題は解決しますか?

何かのようなもの :

hford + geom_segment(data= flows.mini, aes(x=X1.x,y=X2.x, xend=X1.y, yend=X2.y, 
      group = nr, color = fcols, size= n), 
      lineend = "round") +
  scale_size_continuous(range = c(0.05,5)) +
  scale_color_discrete(breaks = c("0-10", "10-100", "100-500", "500+")) + 
  coord_map() 

ここに画像の説明を入力してください

于 2013-03-03T23:14:30.637 に答える