我有一个SpatialPolygonsDataFrame,其中的列包含十六进制颜色值。我想用包tmap:
绘制这样的地图tm_shape(full.shp) + tm_fill(col="konf1900")
但是它被视为分类变量,导致:
我不知道如何告诉tmap它应该直接在地图上绘制颜色值......
有人可以为此提供帮助吗?
编辑:
请参阅下面的答案 - 问题是数据框列没有编码as.character
。我想这可能会帮助某个人......
答案 0 :(得分:3)
显然,问题是列的类型:
full.shp$konf1900char <- as.character(full.shp$konf1900)
tm_shape(full.shp) + tm_fill(col="konf1900char")
需要将其转换为as.character
的字符。
此外,重要的是没有NA值,它们可以转换为白色(#ffffff为十六进制格式):
full.shp$konf1900char[is.na(full.shp$konf1900char)] <- "#ffffff"
通过这些转换,它可以很好地与tmap配合使用,tm_fill可以从变量中获取颜色值。
答案 1 :(得分:2)
library(tmap)
#Load in some example data
data(Europe)
#Create a dataframe with all a column containing country ID and another with an assigned color:
region_col <- data.frame(
iso_a3 = Europe$iso_a3,
mycolors = c(rep("#94b8b8",68)), #Assign the same color to all regions initilally
stringsAsFactors = FALSE
)
#Highlight some selected regions by looking up the 3 letter iso_a3 code and changing the
#associated hexidecimal color reference:
region_col$mycolors[region_col$iso_a3 == "GBR"] <- "#00ff00"
region_col$mycolors[region_col$iso_a3 == "FRA"] <- "#ff0000"
region_col$mycolors[region_col$iso_a3 == "DEU"] <- "#ffff00"
region_col$mycolors[region_col$iso_a3 == "ESP"] <- "#0000ff"
#Import color selection from region_col dataframe into Europe SpatialPolygonDataFrame
Europe$color <- region_col$mycolors
#Plot resultant map:
qtm(Europe, fill = "color")