Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.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:ggplot2图例在更改配色方案时消失_R_Ggplot2_Map Projections - Fatal编程技术网

R:ggplot2图例在更改配色方案时消失

R:ggplot2图例在更改配色方案时消失,r,ggplot2,map-projections,R,Ggplot2,Map Projections,受《邮报》的启发,我尝试使用罗宾逊投影绘制世界地图,并在地图上添加彩色点。 重新投影地图和点效果很好,但是,由于某些原因我不明白,我无法更改点的颜色方案并保留图例。我尝试了以下方法: 首先,我在这里得到了形状文件:和 我得到以下警告删除了5行包含缺失值(geom_点)。和一个空绘图 当我像这样改变色阶时: ggplot(bbox_robin_df, aes(long,lat)) + geom_polygon(data = wmap_df_robin, aes(long,lat, group

受《邮报》的启发,我尝试使用罗宾逊投影绘制世界地图,并在地图上添加彩色点。 重新投影地图和点效果很好,但是,由于某些原因我不明白,我无法更改点的颜色方案并保留图例。我尝试了以下方法:

首先,我在这里得到了形状文件:和

我得到以下警告
删除了5行包含缺失值(geom_点)。
和一个空绘图

当我像这样改变色阶时:

ggplot(bbox_robin_df, aes(long,lat)) + 
  geom_polygon(data = wmap_df_robin, aes(long,lat, group = group, fill = hole)) + 
  geom_point(data = site_locs_robin_df, aes(x, y, colour = ocean), colour = col_pal) +
  scale_colour_manual(values = col_pal) +
  coord_equal() +
  geom_polygon(linetype = 'solid', fill = NA, colour = 'black', size = 0.5) +
  scale_fill_manual(values=c("grey80", "white"), guide="none")
颜色很好(如col_pal中所述),但我失去了传奇。

有什么办法解决这个问题吗?还是其他方法


实际上,我也有更多的点,其中一些重叠,我想确定它们的绘制顺序(例如,位于IND顶部)。如何执行此操作?

问题在于
piratepal()
返回一个命名的颜色向量,而
scale\u color\u manual()
将名称解释为分频:

> piratepal('espresso', length.out = 5)
       blue      yellow         red       green      orange 
"#2366C0FF" "#E9D738FF" "#B91226FF" "#A3DA4BFF" "#FF6435FF" 
由于数据中不存在这些断点,因此将删除这些点

解决方案是取消命名颜色:

col_pal <- unname(piratepal('espresso', length.out = 5))

ggplot(bbox_robin_df, aes(long,lat)) + 
  geom_polygon(data = wmap_df_robin, aes(long,lat, group = group, fill = hole)) + 
  geom_point(data = site_locs_robin_df, aes(x, y, colour = ocean)) +
  scale_colour_manual(values = col_pal) +
  coord_equal() +
  geom_polygon(linetype = 'solid', fill = NA, colour = 'black', size = 0.5) +
  scale_fill_manual(values=c("grey80", "white"), guide="none")

col\u-pal您需要使用
scale\u-color\u手册(values=col\u-pal)
更改调色板,而不更改代码中的任何其他内容。@ClausWilke谢谢,但我已经尝试过了,但得到了警告“删除了5行缺少的值(几何点))“这将导致一个空的绘图,任何人都有机会了解发生了什么,您必须提供您编写的不起作用的代码以及您的shapefile。例如,您可以将它们作为要点上传@克劳斯威尔克:对不起,我编辑了这个问题。谢谢你的帮助我解决了色阶问题。点顺序应该作为一个单独的问题提出,我建议你把它归结为一个问题
> piratepal('espresso', length.out = 5)
       blue      yellow         red       green      orange 
"#2366C0FF" "#E9D738FF" "#B91226FF" "#A3DA4BFF" "#FF6435FF" 
col_pal <- unname(piratepal('espresso', length.out = 5))

ggplot(bbox_robin_df, aes(long,lat)) + 
  geom_polygon(data = wmap_df_robin, aes(long,lat, group = group, fill = hole)) + 
  geom_point(data = site_locs_robin_df, aes(x, y, colour = ocean)) +
  scale_colour_manual(values = col_pal) +
  coord_equal() +
  geom_polygon(linetype = 'solid', fill = NA, colour = 'black', size = 0.5) +
  scale_fill_manual(values=c("grey80", "white"), guide="none")