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