如何使用plot_geo()创建一个等值区域图?

时间:2016-10-31 21:32:50

标签: r dictionary plotly

我正在尝试在R中绘制一个等值区域地图,并在此处使用函数plot_geo()找到了一些非常有前途的代码:https://plot.ly/r/choropleth-maps/。 不幸的是我无法找到如何使代码适应我的问题,我在互联网上找不到有用的解释。

这是原始代码:

# specify some map projection/options
g <- list(
  scope = 'usa',
  projection = list(type = 'albers usa'),
  showlakes = TRUE,
  lakecolor = toRGB('white')
)

plot_geo(df, locationmode = 'USA-states') %>%
  add_trace(
    z = ~total.exports, text = ~hover, locations = ~code,
    color = ~total.exports, colors = 'Purples'
  ) %>%
  colorbar(title = "Millions USD") %>%
  layout(
    title = '2011 US Agriculture Exports by State<br>(Hover for breakdown)',
    geo = g
  )

我使用的数据是数值,确定填充国家/地区的颜色,以及所有欧洲国家/地区的两位数ISO代码。因此,由于我想创建一张欧洲地图,我设置了scope = 'europe',但我不明白projection = list(type = 'albers usa')的作用以及我需要指定的内容。我就这么放弃了。

g <- list(
  scope = 'europe')

我尝试运行以下代码,但生成的地图为“空”,即没有任何国家/地区的颜色。

plot_geo(data) %>%
  add_trace(
    z = ~value, locations = ~LAND_ISO,
    color = ~value, colors = 'Purples'
  ) %>%
  colorbar(title = "") %>%
  layout(geo = g
  )

empty map using plot_geo

我的第一个猜测是,可能证明ISO代码不是指定locations参数的正确方法。如果是这样,那么需要什么呢?或者我是否需要设置上面代码中使用的locationmode参数?这对欧洲会是什么?

任何人都可以帮我吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

您的代码似乎对我有用。我创建了一个如下所示的数据框,并将其传递给您在上面提供的代码,我收到的输出是:

Europe map

我希望问题在于您传递给代码的数据框格式,检查ISO-3代码是否为字符串,值是否为数字等。

library(plotly)

#Create dataframe with toy data:
  LAND_ISO <- c("AUT","BEL","BGR","HRV","CYP","CZE","DNK","EST","FIN","FRA","DEU","GRC","HUN","IRL","ITA","LVA","LTU","LUX","MLT","NLD","POL","PRT","ROU","SVK","SVN","ESP","SWE","GBR")
  value <- runif(length(LAND_ISO), 1, 10)

  data <- data.frame(LAND_ISO, value)

# Run your code:
g <- list(
  scope = 'europe')

plot_geo(data) %>%
  add_trace(
    z = ~value, locations = ~LAND_ISO,
    color = ~value, colors = 'Purples'
  ) %>%
  colorbar(title = "") %>%
  layout(geo = g
  )

仅供参考我相信

  

projection = list(type ='albers usa')

只选择用于从3D地球仪创建2D地图的投影方法 - 有关详细信息,请参阅https://en.wikipedia.org/wiki/Map_projection