Кажется, что у
точек tm есть проблемы со столбцом, который определяет желаемую форму данного наблюдения
из перечисления фигур:
0 = Открытый квадрат
1 =Открытый круг
22 = заполненный квадрат
21 = открытый круг
Когда я устанавливаю аргумент shape в 'shapeCol', где shapeCol является столбцом 0/1 (открытые формы), он возвращает заполненную, но в остальном правильную форму
Когда я вручную устанавливаю фигуру на 0, она возвращает правильную открытую форму, но мне нужно, чтобы эта форма изменялась при наблюдении
создать кадр данных случайным образомпространственные данные
library(sf)
library(tmap)
library(dplyr)
newDf <- data.frame(location=letters[1:30],
lat=32+runif(30,0.01,0.03),
lon=-97+runif(30,.01,.03)) %>%
mutate(rowID=1:n(),
reservoir=case_when(rowID<=15 ~ 'Codell',
TRUE ~'Niobrara'))
newSf <- st_as_sf(newDf,coords=c('lon','lat'),crs=4326)
назначить значения формы / числовой индекс
shapes <- c('Niobrara'='circle',
'Codell'='square')
shapeVals <- c('circle'=21,'square'=22,'triangleup'=24,'diamond'=23,'triangleDown'=25)
borderVals <- c('circle'=0,'square'=1,'triangleup'=2,'diamond'=5,'triangleDown'=6)
newSf.fin <- newSf %>% mutate(shapeType = shapes[reservoir],
shapeCol = as.factor(shapeVals[shapeType]),
borderCol = as.factor(borderVals[shapeType]))
newSf.fin %>% select(borderCol) # 0 and 1 / Open Shapes
#returns filled shapes despite shape column only referencing open values
tm_shape(newSf.fin) + tm_dots(shape='borderCol',size=2)
![incorrect](https://i.imgur.com/hy3RUOP.png)
#returns open shapes by manually setting shape value
tm_shape(newSf.fin) + tm_dots(shape=0,size=2)
![correct](https://i.imgur.com/lBAnJXJ.png)
Я знаю, чтоэто может быть облегчено с помощью карты / зацикливания, но цветовая гамма будет более проблематичной и сложной.Есть ли способ добиться правильных открытых фигур на основе значения столбца?