与这个可重现的示例一样,我try 通过根据另一列value中的值为dfcolors中的预定义 colored颜色 赋值来获得ggplot.我成功地使用了这个代码,但不幸的是,图例中没有显示 colored颜色 .

# create reproducible dataframe
df <- data.frame(runif(500, min=-6, max=3))
names(df)[1] <- "value"
lat <- data.frame(runif(500, min=-5, max=30))  
names(lat)[1] <- "lat"
df <- cbind(df, lat)
lon <- data.frame(runif(500, min=40, max=50))    
names(lon)[1] <- "lon"
df <- cbind(df, lon)
rm(lat, lon)
df <- df %>%
  mutate(colors = 
           ifelse(value > 2  , "#78d058", 
                  ifelse(value >= 1 & value <= 2  , "#a8dc94", 
                         ifelse(value >= 0 & value <= 1  , "#efefef", 
                                ifelse(value < 0 & value >= -1, "#f5a2a2",
                                       ifelse(value < -2 & value >= -3, "#f97c7c",
                                              ifelse(value < -3 & value >= -4, "#fc5555",
                                                     ifelse(value < -4 & value >= -5, "#ff2f2f",
                                                            "#af2020"))))))))

# ggplot
ggplot(data = df) +
  aes(x = lat, y = lon, fill = value) +
  geom_point(colour = df$colors)

enter image description here

对于如何以连续的方式创建既有值又有 colored颜色 的图例,有什么建议吗?

感谢您的帮助或建议.

推荐答案

下面是使用breaksscale_fill_gradientn()的另一种方法:

library(ggplot2)

breaks <- c(-6, -5, -4, -3, -2, -1, 0, 1, 2, 3)
colors <- c("#af2020", "#ff2f2f", "#fc5555", "#f97c7c", "#f5a2a2",
            "#efefef", "#a8dc94", "#78d058", "#78d058")


ggplot(data = df, aes(x = lat, y = lon, fill = value)) +
  geom_point(shape = 21, size = 3, color = "black") +
  scale_fill_gradientn(colors = colors, values = scales::rescale(breaks),
                       breaks = breaks, guide = "colourbar") +
  theme_minimal()

enter image description here

R相关问答推荐

寻找图片边缘

R根据条件进行累积更改

R函数‘paste`正在颠倒其参数的顺序

R—将各种CSV数字列转换为日期

使用RSelenium在R中抓取Reddit时捕获多个标签

汇总数据的Sheffe检验的P值(平均值和标准差)

是否有新方法来更改Facet_WRAP(Ggplot2)中条文本的文本 colored颜色 ?

正在导出默认的RStudio主题,还是设置括号 colored颜色 ?

如何创建累加到现有列累计和的新列?

有没有办法一次粘贴所有列

TidyVerse中长度不等的列结合向量

在使用SliderInput In Shiny(R)设置输入数据的子集时,保留一些情节痕迹

R-找出存在其他变量的各种大小的所有组合

替换在以前工作的代码中有x行&q;错误(geom_sf/gganimate/dow_mark)

我已经运行了几个月的代码的`Palette()`中出现了新的gglot错误

如何用不同长度的向量填充列表?

使用其他DF中的文件名将列表中的每个元素保存到文件中

只有当我在循环的末尾放置一条print语句时,Foreach才会给出预期的输出

以列名的字符向量作为参数按行应用自定义函数

根据单个条件变异多个列