3

R の世界地図を使用してデータを視覚化したいと考えています。ここでは、ラベルが特定のポイント (指定された座標) に追加されます。ラベルは、高さがデータ テーブルの値に比例する 3D 長方形である必要があります。Rパッケージの「リーフレット」(または、より良い場合は代替手段)を使用します。世界中に約 10 ~ 15 のポイントがあり、それぞれの場所に 2 つの値があります (具体的には、ポイントは主要な油田の場所であり、値はたとえばサイズや埋蔵量です)。各ポイントにこのような 2 つの 3D 長方形を作成します。たとえば、赤と青が互いに近くにあり、適切な高さと番号が付けられ、各ポイントに油田の名前が付けられます。リーフレット パッケージで解決策を見つけ、適切な半径で円をマップに追加しました。

データとライブラリは次のコードによってロードされます。

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

また、somedata.csv の構造は次のとおりです (最小限の作業例として 4 つのデータ行のみ)。

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

円でラベル付けされたマップは、コマンドによって呼び出されます

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"))

ただし、このソリューションは、2 番目の値を視覚化できないため (引数 radius=~res.density を介して、 res.density は私の .csv テーブル内の流域の最初の値の名前です)、あまり良くありません。

GMTが制作したこの画像のようなものを再現したいと思っています。単純な (2D) マップで十分ですが、各ポイントに 2 つの長方形が必要で、フィールドの名前と各長方形の値が含まれます。

GMT パッケージの画像

ここに画像の説明を入力

4

1 に答える 1

9

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 を省略できます。

ここに画像の説明を入力

于 2017-08-07T08:37:35.597 に答える