R语言 使用ggplot在Map上绘制多个物种

bqf10yzr  于 2023-06-19  发布在  其他
关注(0)|答案(1)|浏览(96)

我使用坐标x1c 0d1x创建了一个Map
我用这个代码做了上面的Map…

ilwi<-ggplot() +
  geom_polygon(data = w,
               aes(x = long, y = lat, group = group),
               fill = "lightyellow", colour = "black") +
  coord_map() +
  geom_point(data = gent,
             aes(x = long2, y = lat2),
             colour = "royalblue3", size = 2,
             position = "identity") +
  theme(axis.text.x = element_blank(),
        axis.text.y = element_blank(),
        axis.ticks = element_blank(),
        rect = element_blank())

我对Map的外观相当满意(如果去掉纬度和经度标签就好了,但是)。我的问题是,我的数据框架gent有两个物种的坐标,Map,从点的颜色,基本上没有区分两个物种。
下面是一个表格,作为我的数据框(一个有3列的csv)

的示例
如果你对如何解决这个问题有任何建议,请告诉我!理想情况下,物种在Map上会用两种不同的颜色来表示
到目前为止,我已经尝试了在美学上按物种分组acceptedScientificName,我也尝试了用acceptedScientificName来着色和填充。有引号和没有引号。一切都不是我想的那样。
这就是我在fill...

6rqinv9w

6rqinv9w1#

我使用{usmap}和一些虚拟物种数据模拟了一个解决方案。物种数据使用usmap::usmap_transform函数进行转换,以便点与Map区域对齐。请注意gent Dataframe 中变量的顺序,这些顺序由usmap_transform的要求决定。
最重要的是,物种是使用aes函数中的填充和颜色来分组的,并且使用的形状是可以接受填充和颜色的形状,例如形状21。

library(usmap)
library(ggplot2)

set.seed(123)
# mocked up species dataframe

gent <- data.frame(lon = -runif(10, 88, 89),
                   lat = runif(10, 40, 45.5),
                   acceptedScientificName = sample(c("sp1", "sp2"), 10, replace = TRUE)
                   )

plot_usmap(include = c("IL", "WI"),
                  fill = "lightyellow") +
  geom_point(data = usmap_transform(gent), 
             aes(x = x, y = y, 
                 fill = acceptedScientificName, 
                 colour = acceptedScientificName),
             shape = 21)

创建于2023-06-08使用reprex v2.0.2

相关问题