Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为R中地图上大量类别的多边形指定颜色_R_Plot_Mapping_Categorical Data - Fatal编程技术网

为R中地图上大量类别的多边形指定颜色

为R中地图上大量类别的多边形指定颜色,r,plot,mapping,categorical-data,R,Plot,Mapping,Categorical Data,我试图绘制一张不同植被类型的地图,我称之为草。这些类别列在下面grass@data$LEGEND。总共有72个。我不在乎颜色是什么,但每个植被类型都必须有不同的颜色,有些植被类型会出现在多个多边形中 poly<-readOGR(".","vegmap2006_geo") out <- crop(poly, extent(20, 35,-26, -32)) grass<-poly[poly@data$BIOME%in%"Grassland Biome",] colours<

我试图绘制一张不同植被类型的地图,我称之为草。这些类别列在下面grass@data$LEGEND。总共有72个。我不在乎颜色是什么,但每个植被类型都必须有不同的颜色,有些植被类型会出现在多个多边形中

poly<-readOGR(".","vegmap2006_geo")
out <- crop(poly, extent(20, 35,-26, -32))
grass<-poly[poly@data$BIOME%in%"Grassland Biome",]

colours<-terrain.colors(72)
plot(grass,col=colours[grass$LEGEND],border=NA)

但是,R调色板没有包含足够的颜色,每种植被类型的颜色不一样

颜色帮助。要获取R中可用的
颜色列表,请键入

 colors()  # All colors
为了获得某种颜色的特定色调,让我们假设
红色
蓝色
绿色
橙色
类型

 colors()[grep("red",colors())]           # Shades of red
 colors()[grep("blue",colors())]          # Shades of blue
 colors()[grep("green",colors())]         # Shades of green
 colors()[grep("orange",colors())]        # Shades of orange

grass$LEGEND
列中有什么内容?我们需要一个可复制的示例来提供帮助……也许这可以起作用:
plot(grass,col=colors[as.numeric(factor(grass$LEGEND))],border=NA)
Hi grass$LEGEND是与每个多边形相关联的所有植被类型的列表(即:。。grass@data$LEGEND)。我刚刚尝试了绘制您的建议,虽然我不完全确定代码的作用,但它现在已经生成了一个带有颜色的图形,我认为这似乎已经奏效了快速解释:我只是将图例中的字符串转换为因子,基本上将唯一的字符串值与{1..n}中的整数映射,然后我用这些数字作为颜色的索引。。。
 colors()[grep("red",colors())]           # Shades of red
 colors()[grep("blue",colors())]          # Shades of blue
 colors()[grep("green",colors())]         # Shades of green
 colors()[grep("orange",colors())]        # Shades of orange