2017-08-07 4 views
3

ワールドマップを使用してRを使用してデータを視覚化したいと考えています。ラベルは特定のポイント(指定された座標)に追加されます。ラベルは、データテーブルの値に比例した高さの3D長方形でなければなりません。私はRのパッケージ "リーフレット"(または、より良い場合は、任意の代替)を使用します。世界中に約10〜15ポイントあり、各場所に2つの値があります(具体的には、主要な油田の位置です。値は、例えば、サイズと埋蔵量です)。私はそれぞれの点に2つのそのような3D四角形を持たせたいと思います。適切な高さと数で赤色と青色を近くに置いて、それぞれの点に油田の名前を付けるようにします。リーフレットパッケージのソリューションを見つけ、適切な半径で地図に円を追加しました。カスタムラベルを使用したリーフレットマップの作成R

データ及びライブラリは、コードによってロードされる:円形標識

basin,lat,lon,res.density,rel.area 
Central Sumatra,1,96,16.7,75 
North Sea,58.4,2,20,24 
Maracaibo basin,9,-71,74.4,14.3 
Los Angeles,33,-118,31.2,32 

library(leaflet) 
basins<-read.csv("somedata.csv") 

そしてsomedata.csvは、以下の構造(4本のデータラインとしてのみ最小限の実施例)を有していますマップはコマンドによって呼び出されます

m=leaflet(data = basins) %>% addTiles() %>% addCircleMarkers(~lon, ~lat , popup = ~as.character(basin),radius=~res.density*0.4,label=~htmlEscape(basin),labelOptions=labelOptions(noHide=T,textOnly=TRUE,direction="bottom")) 

しかし、この解決方法はあまり良くありません。引数radius =〜res.densityを使用して2番目の値を視覚化することはできません。ここでres.densityは、自分の.csvテーブル内の最初の値の名前です。

GMTが作成したこの画像のようなものを再現したいと思います。プレーン(2D)マップを持つだけで十分ですが、フィールドの名前と各矩形の値とともに、各点に2つのそのような矩形が必要です。

GMTパッケージからの画像

enter image description here

答えて

6

次のように、パッケージleaflet.minichartsの助けを借りて、棒グラフを追加することができます。

library("leaflet") 
library("htmltools") 
library("leaflet.minicharts") 

basins <- read.table(text="basin,lat,lon,res.density,rel.area 
Central Sumatra,1,96,16.7,75 
North Sea,58.4,2,20,24 
Maracaibo basin,9,-71,74.4,14.3 
Los Angeles,33,-118,31.2,32", header=T, sep=",") 

leaflet(data = basins) %>% 
    addProviderTiles("OpenStreetMap.Mapnik") %>% 
    addLabelOnlyMarkers(lng = ~lon, lat = ~lat, label = ~htmlEscape(basin), 
         labelOptions = labelOptions(noHide = TRUE, textOnly = TRUE, 
                direction = "bottom", offset = c(0,5))) %>% 
    addMinicharts(basins$lon, basins$lat, type = "bar", 
       chartdata = basins[, c("res.density", "rel.area")], width = 50, height = 60) 

をおそらく、あなたは簡単にするためaddCircleMarkersを残すことができます。

enter image description here

+0

素晴らしいパッケージです。凡例を調整して変数の名前だけでなく、カスタム説明を与えることは可能ですか?このオプションについては、leaflet.minichartsのドキュメントには触れていません。もちろん、%>%addLegendで凡例を手動で追加することもできますが、適切な伝説のミニチャートは、その場所でスタイリッシュに見えます。 – astrsk

+0

パッケージdocsから、引数addMinichartsは凡例の位置を調整する可能性があります。凡例で異なる文字列を使用する場合は、単に列の名前を変更するだけです。それ以外の場合は、addLegendに移動します。 –

関連する問題