mapview中基于不同变量的点颜色和符号大小

dbo*_*dbo 7 plot r colorbar r-mapview

我正在尝试在 mapview 中使用不同的比例主题来帮助可视化收益与损失,包括:

  • 绝对值刻度上的点符号圆圈大小(突出损失和收益一样多)
  • 圆的发散色标填充(比如深蓝色>蓝色>白色>红色>深红色对于大多数负>负>零>正>最大)
  • 鼠标悬停在保留原始值的标签上

有任何想法吗?


library(tidyverse)
library(mapview)
library(sf)

lat <- rep(34,16)
lon <- seq(-128, -126, length = 16)
value <- c(-1000, -800, -600, -400, -200, -100, -50, 
            -25, 25, 50, 100, 200, 400, 600, 800, 1000)

#make data.frame
df <- data.frame(lat, lon, value) 

#make spatial object for mapview
df <- st_as_sf(df, coords = c("lon", "lat"), crs = 4326) %>%
      mutate(value_abs = abs(value)) #value_abs intended for `cex` argument

pal <-  mapviewPalette("mapviewSpectralColors") #from mapview doc. example
m   <-  mapview(df["value"], #sets hover over value as this column
         cex = "value",      #sets circle diameter scaling on this column
         legend = TRUE,
         col.regions = pal(100), #closest I found to a red-blue divergent scale
         layer.name = "value")  
m
Run Code Online (Sandbox Code Playgroud)

换句话说,我希望下面的点的模式与左侧对称,作为右侧大小的镜像,但左侧有蓝色圆圈,右侧有红色圆圈,并且仍然允许用户看到-1000鼠标悬停的实际(非绝对)值(例如)。

在此处输入图片说明

尝试:cex = "value"在没有绘制任何点的情况下切换cex = "value_abs"收益率warning: In min(x) : no non-missing arguments to min; returning Inf,或者使用cex = df$value_abs(无引号)切换,这会产生未着色的巨大点。我不打算需要两个图例 - 只需要一个用于圆圈大小或填充,像现在一样显示最小值和最大值,会很棒。

M--*_*M-- 4

你们非常接近。您需要明确引用df$value_abs. 往下看:

library(tidyverse)
library(mapview)
library(sf)

df <- data.frame(lat=rep(34,16), 
                 lon=seq(-128, -126, length = 16), 
                 value=c(-1000, -800, -600, -400, -200, -100, -50, 
                         -25, 25, 50, 100, 200, 400, 600, 800, 1000)) 

df <- st_as_sf(df, coords = c("lon", "lat"), crs = 4326) %>%
               mutate(value_abs = abs(value))

pal <-  mapviewPalette("mapviewSpectralColors")

mapview(df["value"], 
                cex = df$value_abs/100, 
                legend = TRUE,
                col.regions = pal(100), 
                layer.name = "value")  

Run Code Online (Sandbox Code Playgroud)

由reprex 包(v0.3.0)于 2019-06-24 创建

  • @HermanToothrot 我不明白为什么你称其为*“hack”*。OP 并没有要求尺寸成为图例的一部分。如果您有后续问题,请发布新问题。您可以分享这篇文章的链接,也可以标记我并与我分享您的问题的链接。干杯。 (2认同)