3

我想用 R 中的maps包制作一个等值线。我有我构建的数据来创建 bin 并将颜色名称与这些 bin 相关联。现在,在本例中,我需要使用 col= 参数将颜色指向县。我如何构建这个论点?我会认为构建一个数据框会将县和颜色关联在同一条线上?这不是真的吗?到目前为止,我有以下

示例数据:

County    |  Value | Bin | Color
alamance  |   100  | 1   | white
brunswick |  1000  | 2   | red
 ... through 100 counties

R代码(不起作用):

library("maps")
DATA <- read.csv("~/Example_Data.csv")
DATA$County <- as.character(DATA$County)
DATA$Color <- as.character(DATA$Color)
NC <- map('county', 'north carolina', col= DATA$Color, Fill=TRUE)
4

1 回答 1

0

所以,经过多次迭代,这里才是解决方案的精髓所在。与其给出使其工作的 R 代码(相当平淡),不如给出有助于解决问题的规则。

  1. 包中包含的county.fips 数据有一列包含所有州和县的名称。这揭示了县名匹配的格式,它们都是小写的,“州,县”,没有空格。
  2. 对于 NC 子集,有 102 个条目,而不是 100 个,因为 Currituck 县被细分为三个实体。这是大多数/所有问题的根源,很难诊断但很容易解决。

解决方案 1 - 将颜色向量与县向量匹配。正确的 ALPHA顺序中的102 个颜色条目将产生正确结果的等值线。如果您尝试为美国所有县执行此操作,最快但也最不方便

解决方案 2 - 将 fips 代码添加到原始数据,然后匹配 fips。由于 County.fips 文件将 Currituck 实体列为“北卡罗来纳州,currituck:main”等,因此仍需要进行一些操作或查找外部 fips 参考。这是 maps() 文档中使用的方法,但是会花费太长时间,所以我更喜欢前者。但是,例如,花时间可以让您接近国家数据集。

于 2013-08-08T15:17:02.810 回答