R 如何自定义ggplot中图例标签的名称

R 如何自定义ggplot中图例标签的名称,r,ggplot2,gis,R,Ggplot2,Gis,我有以下代码: p <- ggplot() + coord_fixed() + xlab("") + ylab("") base_world <- p + geom_polygon(data=world_map, aes(x=long, y=lat, group=group), colour="green", fill="whitesmoke") + ge

我有以下代码:

p <- ggplot() + coord_fixed() + xlab("") + ylab("")

base_world <- p + geom_polygon(data=world_map, aes(x=long, y=lat, group=group), 
                                         colour="green", fill="whitesmoke") +
                      geom_point(data = as.data.frame(coordinates(busxy)), size = 1,
                                        mapping = aes(x = busxy@coords[,1], y = busxy@coords[,2],
                                                      color = busxy$color)) +
                      labs(title = "Cities\n", color = "States\n") +
                      scale_color_manual(labels = col2state$s, values = col2state$c)
它打印这个:

问题是地图上的颜色与图例中的颜色不一致。 当我从绘图中删除scale\u color\u manuallabels=col2state$s,values=col2state$c时,一切正常,但“状态”有数据中的颜色名称

我的问题是:如何在图像中保留标签名称,同时也为这些标签指定适当的颜色(如地图中的标签)

col2state$c中有29个颜色名称,如29A934 col2state$s中有29个州标签,如图例中所示。 数据帧busxy包含144k条记录,其中包含29个唯一的状态值

数据来自: 图书馆地图


world_map不调用列,而是为颜色和状态标签保存唯一值的向量。确保向量的顺序匹配

vec_c <- unique(col2state$c)
vec_s <- unique(col2state$s) #may need to re-order, or opt to manually create vector
scale_color_manual(labels = vec_c, values = vec_s)
“比例\颜色\手动”可以不使用“标签”参数。解决此问题的一种方法是缩放颜色手动值=我的颜色,其中我的颜色是国家到其颜色的映射,以命名的字符向量组织,例如cAZ=蓝色,NV=红色

例如:

df <- data.frame(x=1:3, y = 2:4, f = as.factor(1:3))
my_colors <- c('1'= "blue", '2' = "red", '3' = "yellow")
ggplot(df) + geom_point(aes(x = x, y = y, color = f)) + scale_color_manual(values = my_colors)

我们无法访问busxy..我已更新..我的颜色在第二层几何点上。第一层几何多边形是正常的。