首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >通过绘制值和颜色创建颜色条

通过绘制值和颜色创建颜色条
EN

Stack Overflow用户
提问于 2018-06-07 14:01:04
回答 1查看 51关注 0票数 0

我已经创建了自己的色标,为值分配了一种特定的颜色,如下所示:(Dataframe = df_avg,values列= pmplot,colour列= gr_colour)

代码语言:javascript
复制
df_avg$gr_colour[df_avg$pmplot<5] <- "palegreen4"
df_avg$gr_colour[df_avg$pmplot>=5 & df_avg$pmplot<10] <- "palegreen3"
df_avg$gr_colour[df_avg$pmplot>=10 & df_avg$pmplot<12] <- "palegreen2"
df_avg$gr_colour[df_avg$pmplot>=12 & df_avg$pmplot<14] <- "palegreen1"
df_avg$gr_colour[df_avg$pmplot>=14 & df_avg$pmplot<16] <- "lightgoldenrod1"
df_avg$gr_colour[df_avg$pmplot>=16 & df_avg$pmplot<18] <- "khaki1"
df_avg$gr_colour[df_avg$pmplot>=18 & df_avg$pmplot<20] <- "goldenrod1"
df_avg$gr_colour[df_avg$pmplot>=20 & df_avg$pmplot<22] <- "darkgoldenrod1"
df_avg$gr_colour[df_avg$pmplot>=22 & df_avg$pmplot<24] <- "darkorange1"
df_avg$gr_colour[df_avg$pmplot>=24 & df_avg$pmplot<26] <- "darkorange2"
df_avg$gr_colour[df_avg$pmplot>=26 & df_avg$pmplot<28] <- "orangered1"
df_avg$gr_colour[df_avg$pmplot>=28 & df_avg$pmplot<30] <- "orangered3"
df_avg$gr_colour[df_avg$pmplot>=30] <- "red3"

每个PM_value都有一个对应的纬度和经度值,我希望将它们绘制为一个ggmap上的点。我的数据帧的开头如下所示:

代码语言:javascript
复制
Lat            Long           PM_value      colour
-33.92426      151.2280       19.6          goldenrod1
-33.92406      151.2278       16.8          khaki1
-33.92386      151.2278       13.1          palegreen1

我目前正在绘制这张地图,如下所示:

代码语言:javascript
复制
map = get_map(location = c(lon = 151.22528, lat = -33.91413), zoom = 15, maptype = "roadmap")

ggmap(map) + geom_point(data = df_avg, aes(x = df_avg$Long, y = df_avg$Lat), col = df_avg$gr_colour, cex = 4)

我想创建一个颜色条,图例对应于颜色,颜色条对应于匹配的颜色(在列‘PM_values’中)。

到目前为止,我已经创建了颜色的渐变,如下所示:

代码语言:javascript
复制
colfunc <- colorRampPalette(c("palegreen4", "palegreen3", "palegreen2", "palegreen1", "lightgoldenrod1","khaki1", "goldenrod1", "darkgoldenrod1", "darkorange1", "darkorange2", "orangered1", "orangered3"))

plot(rep(1,100),col=colfunc(100),pch=15,cex=3)

如何在这个ggmap中创建一个颜色条,使颜色与'PM_value‘中的相应值相匹配?

EN

回答 1

Stack Overflow用户

发布于 2018-06-07 14:27:22

你可以试试这个吗?

代码语言:javascript
复制
library(tidyverse)
pal <- c("palegreen4", "palegreen3", "palegreen2", "palegreen1", "lightgoldenrod1","khaki1", "goldenrod1", "darkgoldenrod1", "darkorange1", "darkorange2", "orangered1", "orangered3","red3")
Breaks <- c(0,5,seq(10,30,2))
set.seed(123)
tibble(PM_value=sample(1:50, 500, T)) %>% 
  mutate(col=cut(PM_value, breaks = c(0,5,seq(10,30,2), max(PM_value)), labels = c(0,5,seq(10,30,2)))) %>% 
  mutate(col=as.numeric(as.character(col))) %>% 
  ggplot(aes(x=seq_along(PM_value),y=PM_value, color=col)) + 
    geom_point() + 
    scale_colour_gradientn(colors = pal, values=scales::rescale(c(0,5,seq(10,30,2))))

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50733919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档