2017-12-18 19 views
0

私は、一連の原点を補間して構築したデータフレームを持っています(シアトルで実行されていたサイクルシェアスキームに関連しています)。ggplotのグラディエントカラー(比較的シンプル)

私はデータフレームinterpolated_flows呼ばれてきました

line_id  long  lat seg_num count 
1  1 -122.3170 47.61855  1 155 
2  1 -122.3170 47.61911  2 155 
3  1 -122.3170 47.61967  3 155 
4  1 -122.3170 47.62023  4 155 
5  1 -122.3169 47.62079  5 155 
6  1 -122.3169 47.62135  6 155 

は私がやりたい何か(と私はあなたがggplotを知っていれば比較的簡単だと思いますが)の幅でこれらの流れ(ライン)をプロットすることですcountによって決定される線と、seg_numによって決定される勾配とを含む。

これは、これまでの私の試みです:

#Create variables to store relevant data for simplicity of code 
X <- interpolated_flows$long 
Y <- interpolated_flows$lat 
sgn <- interpolated_flows$seg_num 
ct <- interpolated_flows$count 

#Create a map from flow data and include the bounded box as a base 
g <- ggplot(interpolated_flows,aes(x=X, y=Y),group=interpolated_flows$line_id,color=sgn) 
map <- ggmap(seattle_map,base_layer = g) 

map <- map + geom_path(size=as.numeric(ct)/100,alpha=0.4)+ 
    scale_alpha_continuous(range = c(0.03, 0.3))+coord_fixed(ratio=1.3)+ 
    scale_colour_gradient(high="red",low="blue") 

png(filename='Seattle_flows_gradient.png') 
print(map) 
dev.off() 

そして私は、添付された画像になってしまいます。私は、コードのプロット部分でさまざまなパラメータを使って遊んでいましたが、成功していないと、誰かが私を正しい方向に向けることができたら本当に感謝しています。 enter image description here

編集:

base <- ggplot(interpolated_flows,aes(x=X, y=Y)) 
map <- ggmap(seattle_map,base_layer = g) 

map <- map+geom_path(aes(color=seg_num,size=as.numeric(count)))+ 
    scale_size_continuous(name="Journey Count",range=c(0.05,0.4))+ 
    scale_color_gradient(name="Journey Path",high="white",low="blue",breaks=c(1,10), labels=c('Origin','Destination'))+ 
    coord_fixed(ratio=1.3)+scale_x_continuous("", breaks=NULL)+ 
    scale_y_continuous("", breaks=NULL) 

png(filename='Seattle_flows_gradient.png') 
print(map) 
dev.off() 

これは私が今、このように見えるためにどの持ってプロットしたものです。私には2つの質問だけがあります - 1)誰もがバックグラウンドマップの解像度を改善する方法を知っていますか? get_map機能のzoomパラメータを変更しようとしましたが、それは役に立たないようです。 2)私がプロットした線は、非常に「白い」重く見える。グラデーションが均等に分散されているように見えるわけではありません。誰にも、これがどうしていいのか、どのように修正するのかというアイデアはありますか?

enter image description here

+0

あなたは、元のデータフレームのうち、物事をリマップべきではありませんがお役に立てば幸いです、そしてそれはおそらく、なぜあなたの色マッピングISNです働いていない。 'interpolated_flows'を最初の' ggplot'引数として渡すと、 'interpolated_flows $ column'を使わずに名前で列を参照することができます。単に' column'を使うだけです。だから、それを修正し、グラデーションが正しくマッピングされるかどうかを確認してください – Mako212

+0

@ Mako212ありがとうございました。今日はggplotの1日目です:D – soundofsilence

答えて

1

これがあなたに合っている場合を参照してください。私は、相違を見るために新しいデータセットを作成しました。 data.frameが作成されると、これを最初のggplot引数として使用し、Mako212のように名前を参照することができます。

Result

long<-seq(-122,-123,length.out = 6) 
lat<-seq(47,48,length.out = 6) 
seg_num<-seq(1,6,1) 
count<-seq(155,165,length.out = 6) 

interpolated_flows<-data.frame(long,lat,seg_num,count,stringsAsFactors = false) 

base_plot<-ggplot(interpolated_flows,aes(x=long, y=lat)) 


base_plot+ 
    geom_path(aes(color=seg_num,size=as.numeric(count/100),alpha=lat))+ 
    #notice that size, color and alpha are into aethetic 
    scale_size_continuous(name="Count")+ 
    scale_alpha_continuous(name="Latitude",range = c(0.03, 0.3))+ #you won't need it if you don't want variable transparency 
    #just put the desired value into the aethteic 
    scale_color_gradient(name="Seg_num",high="red",low="blue")+ 
    coord_fixed(ratio=1.3) 
は、それは、それはない `ggplot`方法論に沿ったものだ

+0

あなたの助力、スーパーエフォートに感謝します。あなたの答えは、私が必要としていた場所への道をほとんど手に入れることができました。うまくいけば、いくつかの人がこれを将来的に役立つと思うでしょう。 – soundofsilence

関連する問題