web-dev-qa-db-ja.com

文字変数の色を追加するRリーフレット

Rでリーフレットマップを作成しようとしていますが、これから追加したいのは、変数ごとに異なるはずの円の色だけです。私のデータには、データセットに約5つの異なる値を持つ列Data.Typeがあります。私が欲しいのは、これらのデータポイントに5つの異なる色の円を付けることです。

  output$map <- renderLeaflet({
    leaflet() %>%
      addTiles(
        urlTemplate = "//{s}.tiles.mapbox.com/v3/jcheng.map-5ebohr46/{z}/{x}/{y}.png"
      ) %>%
      setView(lng = x, lat = x, zoom = 4)

    leaflet(getData()) %>% addTiles() %>%
      addCircles(lng = ~Longitude, lat = ~Latitude, weight = 1, radius=~Var, popup = ~Var, color=~Data.Type
      )
  })

これだけが灰色がかった円のみを返し、5つの違いは返しません。これはどのように行う必要がありますか?

編集:データはこのように見えますが、実際には20.000行を超えています

ID    Var    Var    Var   Data.Type
0     99     2016   743    Type A
1     99     2016   209    Type B
2     99     2016   349    Type A
3     99     2016   349    Type D
4     99     2016   993    Type A
5     99     2016   122    Type E
6     99     2016   194    Type B
7     99     2016   660    Type A
8     99     2016   221    Type C
...

Data.Typeの各変数に色を付けるという考え方で、約6つの異なる値しか持てません

6
dnsko

MLavoieのコメントを拡張して、最初にパレット関数を定義する必要があります。これを行うにはいくつかの方法があります。そのうちの2つは、完全に構成されたデータセットを使用して以下に示します。うまくいけば、それはあなたのデータにもうまくいくでしょう。

あまり多くの要素がなく、手動で色を設定したい場合は、確かにそれを行うことができます。これが以下の最初のpal関数です。

色を手動で設定するのが適切でないなど、多くの要因がある場合は、RColorBrewerパレットを使用してみてください。これは、以下の2番目のpal関数です。どちらでも使用できます。両方のpal関数は必要ありません。参照として、それらを含めました。すべてのパレット名オプションを表示する場合は、RColorBrewer::display.brewer.all()を呼び出します。

library('leaflet')

# Fake data
df <- data.frame(lng = c(-5, -10, -15, -20, 25),
                 lat = c(8, 12, 33, 4, 18),
                 size = c(200000, 100000, 800000, 250000, 350000),
                 popup = c('A', 'B', 'C', 'D', 'E'),
                 type = c('A', 'B', 'C', 'D', 'E'),
                 stringsAsFactors = FALSE)

# If you want to set your own colors manually:
pal <- colorFactor(
  palette = c('red', 'blue', 'green', 'purple', 'orange'),
  domain = df$type
)

# If you want to use predefined palettes in the RColorBrewer package:
# Call RColorBrewer::display.brewer.all() to see all possible palettes
pal <- colorFactor(
  palette = 'Dark2',
  domain = df$type
)

leaflet(df) %>%
  addTiles() %>%
  addCircles(lng = ~lng, lat = ~lat, weight = 1, 
             radius = ~size, popup = ~popup, color = ~pal(type))
13
Sam