R有没有显示地球地图的功能?

问题描述 投票:0回答:1

我对这段代码有疑问。地图出现,但没有颜色。我已经安装了 tidiverse、highcharter、geonames、ggplot2、gganimate、地图、ggmap。我应该安装更多软件包吗?

population<-baza %>% 
  select(Country, Population)


highchart() %>% 
  hc_add_series_map(worldgeojson, df=population, value="Population", joinBy = "Country") %>% 
  hc_colorAxis(stops=color_stops()) %>% 
  hc_title(text="World Population") %>% 
  hc_tooltip(useHTML = TRUE,
             formatter = JS(
               "function(){",
               "  return '<b><u>'+this.point.Country+'</u></b><br>'",
               "         +'<b>Population:</b> '+parseInt(this.point.value);",
               "}"
             )
  ) %>% 
  hc_legend(
    enabled = TRUE,
    title = list(text = "Population"),
    layout = "vertical",
    align = "right",
    verticalAlign = "middle"
  )

Baza 是我的数据框,其中包含“国家/地区”和“人口”列。 应该在这段代码中添加一些东西吗?

r maps r-highcharter
1个回答
0
投票

该问题与任何丢失的软件包无关,例如

highcharter
不需要
ggplot2
gganimate
,...如果缺少包,R 通常会抱怨并显示错误消息。当您使用
install.packages
安装软件包时,所有需要的依赖包通常也会安装。

最可能的问题是您的数据集

population
无法合并到geojson数据中,例如当您错误指定
joinBy
列时会发生。

我查看了文档(

?hc_add_series_map
)并猜测您使用由
worldgeojson
提供的
highcharter
数据,问题是
worldgeojson
数据没有属性
Country
,例如国家/地区名称存储在属性
name
中,ISO3 国家/地区代码存储在名为
iso3
的属性中,...

因此,在这种情况下,解决您的问题的方法是重命名您的

Country
列。

使用一些虚假示例

population
数据,我假设
Country
包含国家/地区名称:

library(highcharter)
library(dplyr)

population <- data.frame(
  Country = "United States of America",
  Population = 300
)

population <- population |> 
  rename(name = Country)

data(worldgeojson, package = "highcharter")

highchart() %>% 
  hc_add_series_map(worldgeojson, df = population, value = "Population", joinBy = "name") %>%
  hc_colorAxis(stops = color_stops()) %>%
  hc_title(text = "World Population") %>%
  hc_tooltip(
    useHTML = TRUE,
    formatter = JS(
      "function(){",
      "  return '<b><u>'+this.point.Country+'</u></b><br>'",
      "         +'<b>Population:</b> '+parseInt(this.point.value);",
      "}"
    )
  ) %>%
  hc_legend(
    enabled = TRUE,
    title = list(text = "Population"),
    layout = "vertical",
    align = "right",
    verticalAlign = "middle"
  )

© www.soinside.com 2019 - 2024. All rights reserved.