0

大家好!我真的需要一些帮助才能在连续地图上创建离散图例。

到目前为止我所拥有的:在这里,您可以根据 4 个统计算法看到植物物种出现的概率。在图例中,您会看到“0,1,2,3,4”,但图例值是分类值,但图例颜色调色板仍然在连续值下工作,颜色未正确分离。

但是,我想要的是一个分类图例,它根据图例中的每个类别从地图中获取连续值,旨在清楚地表明算法预测的一致性,没有连续的比例。

图 2 你看到了完美的地图,但我想使用 ggplot2 制作它:在这里,我可以在离散图例中清楚地指出与 4 个统计算法相对应的颜色。

对于第二张地图,我使用了以下代码:

 breakpoints <- c(-125,125,375,625,875,1125)
   colors <- c(grey(seq(0.9,0.7,-0.2)),gcolors(3))
   a.arg <- list(at=seq(0,1000,length.out=5), labels=c("0","1","2","3","4"),cex.axis=1.5)
   l.arg <- list(text="Vote",side=2, line=0.5, cex=1.5)

  par(mar=c(0,0,0,r.mar),cex=1.4)
   plot(mymap,col=colors,ext=study_area, breaks=breakpoints,
   legend.width=1.5,legend.shrink=0.6,legend.mar=7,
   axis.args=a.arg,legend.arg=l.arg,
   axes=FALSE, box=FALSE, zlim=c(0,1000))

而且效果很好!

但是,在 ggplot2 下,我使用的是这段代码:

 #Color scales pres 
 col_scale_var_test_pres <- scale_fill_gradientn(
   colours = c(grey(c(0.90,seq(0.9,0.7,-0.2))),gcolors(3)), # colour palete
   na.value="transparent",
   values=rescale(seq(0,1000),0,1000), 
   limits=c(0,1000),
   breaks= seq(0,1000,by=250), # if one algo predict species occurrence it counts 250, two algos 
   #(500), ### three (750), four (1000)
   labels= c(0,1,2,3,4)
  )

  b1 <- plot_anomaly_2(r= species_map, label="(b)",title="") + col_scale_var_test_pres

我已经尝试使用#scale_fill_manual、#scale_fill_gradientn 等,并且还搁置了这个问题(非常相似): R ggplot2 discret color palette for gradient map。但我仍然无法解决这个问题。

任何帮助和建议将不胜感激!

4

1 回答 1

0

下一次可重现的代码可能会更有用。假设您想data从数据框中绘图mymap,那么以下代码可能会有所帮助:

library(tidyverse)
library(ggthemes)
mymap %>%
  mutate(value = cut(data,
                     breaks = c(-125,125,375,625,875,1125), right = FALSE,
                     labels = c("0", "1", "2", "3", "4", "5"))) %>%
  ggplot(., aes(x = long, y = lat, group = group, fill = value)) +
  geom_polygon(col = "grey") + scale_fill_brewer(palette = "YlGnBu", direction = 1) +
  coord_fixed(xlim = c(-130, 1200)) + theme_map() + 
  theme(legend.position = "bottom")
于 2020-11-10T09:55:56.110 回答