【问题标题】:Creating a map plot in R using plot_usmap package使用 plot_usmap 包在 R 中创建地图
【发布时间】:2018-11-15 22:14:50
【问题描述】:

我有一个数据集,其中包含不同的州、邮政编码和索赔计数,每一个都位于不同的列中。我正在尝试创建一个图,以根据 MA​​ 州的邮政编码显示总索赔数。

数据集:

我用它来按 MA 过滤:

MA_medicare <- medicare %>%
  filter(medicare$NPPES.Provider.State == "MA")

然后我用它来设置 plot_usmap 的 fips 代码:

MA_medicare$NPPES.Provider.State <- fips(MA_medicare$NPPES.Provider.State)
setnames(MA_medicare, old=c("NPPES.Provider.State"), new=c("fips"))

最后一次尝试绘制图表(不知道为什么这不起作用):

plot_usmap(data = MA_medicare, values= c("Total.Claim.Count", "NPPES.Provider.Zip.Code"), include = c("MA")) + scale_fill_continuous(low= "white", high= "red") + theme(legend.position = "right") 

错误:美学长度必须为 1 或与数据相同 (4350838):填充

【问题讨论】:

  • “不起作用”到底是什么意思?你得到某种错误吗? plot_usmap 函数来自哪个包(这不是基本的 R 函数)。如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则更容易为您提供帮助。
  • @MrFlick 我现在提供了更多信息。我正在使用的包是“usmap”,我得到的错误是:错误:美学必须是长度 1 或与数据相同(4350838):填充
  • @www 我很抱歉我试图重现数据集。我现在添加了我正在尝试使用的一些行和列的图片。
  • 感谢您的更新。像之前使用iris 数据一样使用dput 是个好主意。屏幕截图是一种糟糕的数据共享方式,因为不太可能有人愿意根据您的图片输入所有文本。

标签: r filter usmap


【解决方案1】:

我是usmap 的开发者。 plot_usmap 只接受一列用于绘图的值,因此您可能正在寻找以下内容:

plot_usmap(data = MA_medicare, values = "Total.Claim.Count", include = c("MA"))

但是,您的数据是按邮政编码的,目前usmap 不支持邮政编码地图(仅支持州和县级地图)。它使用 FIPS 列为地图上的州/县分配颜色。由于您按州定义了 FIPS 代码,因此您只需用一种纯色填充整个马萨诸塞州。

【讨论】:

  • 感谢 Paolo 这个很棒的包裹。在无法安装geosgdal 的环境中,它非常有用。我试图在同一张地图上绘制州和县的边界,有没有办法使用plot_usmap 来做到这一点?我尝试使用来自 ggplot2 的规范 + 连接两个单独的图,但没有运气......谢谢!
  • @CyrusMohammadian 不幸的是,目前这不是 usmap 内置的功能。但是,此处描述了一种解决方法:github.com/pdil/usmap/issues/26。它有望在下一个版本中出现,因此不需要解决方法(但我目前没有时间表)
  • 感谢 Paolo 提供的这个惊人的包裹!干得好。
猜你喜欢
  • 2020-05-08
  • 1970-01-01
  • 2019-07-10
  • 2017-10-23
  • 2015-06-24
  • 2019-06-07
  • 2022-10-13
  • 1970-01-01
  • 2012-11-04
相关资源
最近更新 更多