Используя ggplot2 (v 3.2.1) и sf (v. 0.7-7), я могу легко построить карту моих необработанных данных с цветными точками в выбранной форме, без проблем:
P1 <- ggplot() +
geom_sf(data = Map.nb) +
geom_sf(data = Df_raw, shape = 22, size = 2, fill = 'purple') +
theme_bw()
В приведенных выше необработанных данных каждое местоположение имеет несколько рядов данных (например, три ловушки на сайт). Я создаю второй фрейм данных, суммирующий данные для каждого сайта, используя dplyr (v. 0.8.3)
Df.summarize <- Df_raw %>%
group_by(plot_id) %>%
summarise(moth_per_plot = sum(moth_count), traps = n_distinct(trap)) %>%
mutate (avg_moth_per_trap = moth_per_plot/traps)
Если я строю обобщенные данные, они отображаются нормально, но я не могу изменить форму или заполнение точки.
P2 <- ggplot() +
geom_sf(data = Map.nb) +
geom_sf(data = Df.summarize, shape = 22, size = 2, fill = 'purple') +
theme_bw()
Как ни странно, если я заменю fill = 'purple'
на col = 'purple'
контур точек изменит цвет (как и ожидалось). Я в недоумении, почему я могу изменить col
, но не fill
или shape
.
Кто-нибудь знает, как я могу изменить заполнение и форму в моем графике обобщенных данных? Или есть какое-то объяснение, почему это работает с моими необработанными данными, но не для сводных данных?
Примечание: class(Df.summarize)
- это 'sf', 'tbl_df', 'tbl' & 'data.frame' class(Df.raw)
- это 'sf' & 'data.frame'
I ' мы преобразовали класс Df.summarize
в соответствие Df.raw
, но это не помогает.
Редактирование str()
каждого фрейма данных:
str(Df_raw)
Classes ‘sf’ and 'data.frame': 390 obs. of 3 variables:
$ plotid : chr "4592 6665" "4566 6698" "4546 6653" "4571 6617" ...
$ moth_count: num 22 41 4 20 129 1 8 2 95 35 ...
$ SHAPE :sfc_POINT of length 390; first list element: 'XY' num 2487757 7436473
- attr(*, "sf_column")= chr "SHAPE"
- attr(*, "agr")= Factor w/ 3 levels "constant","aggregate",..: NA NA
..- attr(*, "names")= chr "plotid" "moth_count"
str(Df_summarized)
Classes ‘sf’, ‘tbl_df’, ‘tbl’ and 'data.frame': 156 obs. of 5 variables:
$ plotid : chr "4538 6587" "4538 6715" "4545 6561" "4546 6653" ...
$ moth_per_plot : num 7 135 17 12 2 18 59 152 13 19 ...
$ traps : int 3 3 2 2 2 3 3 3 3 3 ...
$ SHAPE :sfc_GEOMETRY of length 156; first list element: 'XY' num [1:3, 1:2] 2548882 2548899 2548920 7376785 7376824 ...
$ avg_moth_per_trap: num 2.33 45 8.5 6 1 ...
- attr(*, "sf_column")= chr "SHAPE"
- attr(*, "agr")= Factor w/ 3 levels "constant","aggregate",..: NA NA NA NA
..- attr(*, "names")= chr "plotid" "moth_per_plot" "traps" "avg_moth_per_trap"