使用 ggmap 的物种丰度图 -> 如何适当调整点的大小
Abundance map of species with ggmap -> How to adjust sice of points adequate
我想用 ggmap 创建一个地图,您可以在其中查看哪个物种在哪里找到了多少次。 "how many" 应该用 point/bubble 的大小来表示。但我可以想象用颜色表示(如热图)也可以,然后通过塑造点来分离物种。
到目前为止我得到了什么:
对于背景图:
B<-get_map(location = c(lon = -56.731405, lat =-61.4831206),
zoom = 6,
scale = "auto",
maptype = c("terrain"),
source = c("google"))
对于散点图:
D<-ggmap(B) +
geom_point(data=Anatomy,
aes(x=Anatomy$Longitude,y=Anatomy$Latitude,
color=Species,
size=??) +
scale_size_continuous(range=c(1,12))
我的数据=解剖学看起来像这样:
Species Lat Long Station
1 A 50 60 I
2 A 50 60 I
3 A 40 30 II
4 B 50 60 I
5 B 40 30 II
6 C 50 60 I
7 C 10 10 III
8 C 10 10 III
9 C 40 30 II
我的想法是使用 dplyr 并按行过滤并以某种方式对类别求和。或者你怎么看?您认为这是呈现这些数据的最佳方式吗?
欢迎使用 Whosebug!为了帮助人们帮助你,你应该努力提供一个reproducible example。例如,这里是您数据的一小段代码摘录:
library(tidyverse)
Anatomy <- tribble(~Species, ~Lat, ~Long, ~Station,
"A", 50, 60, "I",
"A", 50, 60, "I",
"A", 40, 30, "II",
"B", 50, 60, "I",
"B", 40, 30, "II")
您的 data/code 有几个问题:
- 投影:您很可能需要重新投影数据。只看坐标,你的点是50、60,而地图显示-50、-60。找出投影,并使用
sf
包中的 st_transform
- 引用变量:你不需要像
Anatomy$Latitude
那样再次调用数据框。只需使用 Latitude
。另外 latitude
实际上是 lat
在你的数据中!?
- 聚合:我建议只使用
count()
函数来查看每个站点的观测数量。
这是一段代码。注意我只是将 (60, 50) 反转为 (-60, -50) 这显然是错误的!
library(ggmap)
#> Loading required package: ggplot2
#> Google's Terms of Service: https://cloud.google.com/maps-platform/terms/.
#> Please cite ggmap if you use it! See citation("ggmap") for details.
library(tidyverse)
B<-get_map(location = c(lon = -56.731405, lat =-61.4831206),
zoom = 6,
scale = "auto",
maptype = c("terrain"),
source = c("google"))
library(tidyverse)
Anatomy <- tribble(~Species, ~Lat, ~Long, ~Station,
"A", 50, 60, "I",
"A", 50, 60, "I",
"A", 40, 30, "II",
"B", 50, 60, "I",
"B", 40, 30, "II")
Anatomy_clean <- Anatomy %>%
mutate_at(c("Lat", "Long"), funs(-1*.)) %>%
count(Species, Lat, Long, Station)
#> Warning: funs() is soft deprecated as of dplyr 0.8.0
#> please use list() instead
#>
#> # Before:
#> funs(name = f(.)
#>
#> # After:
#> list(name = ~f(.))
#> This warning is displayed once per session.
ggmap(B) +
geom_point(data=Anatomy_clean,
aes(x= Lat,y=Long, color=Species, size= n)) +
scale_size_continuous(range=c(1,12))
#> Warning: Removed 2 rows containing missing values (geom_point).
我想用 ggmap 创建一个地图,您可以在其中查看哪个物种在哪里找到了多少次。 "how many" 应该用 point/bubble 的大小来表示。但我可以想象用颜色表示(如热图)也可以,然后通过塑造点来分离物种。 到目前为止我得到了什么: 对于背景图:
B<-get_map(location = c(lon = -56.731405, lat =-61.4831206),
zoom = 6,
scale = "auto",
maptype = c("terrain"),
source = c("google"))
对于散点图:
D<-ggmap(B) +
geom_point(data=Anatomy,
aes(x=Anatomy$Longitude,y=Anatomy$Latitude,
color=Species,
size=??) +
scale_size_continuous(range=c(1,12))
我的数据=解剖学看起来像这样:
Species Lat Long Station
1 A 50 60 I
2 A 50 60 I
3 A 40 30 II
4 B 50 60 I
5 B 40 30 II
6 C 50 60 I
7 C 10 10 III
8 C 10 10 III
9 C 40 30 II
我的想法是使用 dplyr 并按行过滤并以某种方式对类别求和。或者你怎么看?您认为这是呈现这些数据的最佳方式吗?
欢迎使用 Whosebug!为了帮助人们帮助你,你应该努力提供一个reproducible example。例如,这里是您数据的一小段代码摘录:
library(tidyverse)
Anatomy <- tribble(~Species, ~Lat, ~Long, ~Station,
"A", 50, 60, "I",
"A", 50, 60, "I",
"A", 40, 30, "II",
"B", 50, 60, "I",
"B", 40, 30, "II")
您的 data/code 有几个问题:
- 投影:您很可能需要重新投影数据。只看坐标,你的点是50、60,而地图显示-50、-60。找出投影,并使用
sf
包中的 - 引用变量:你不需要像
Anatomy$Latitude
那样再次调用数据框。只需使用Latitude
。另外latitude
实际上是lat
在你的数据中!? - 聚合:我建议只使用
count()
函数来查看每个站点的观测数量。
st_transform
这是一段代码。注意我只是将 (60, 50) 反转为 (-60, -50) 这显然是错误的!
library(ggmap)
#> Loading required package: ggplot2
#> Google's Terms of Service: https://cloud.google.com/maps-platform/terms/.
#> Please cite ggmap if you use it! See citation("ggmap") for details.
library(tidyverse)
B<-get_map(location = c(lon = -56.731405, lat =-61.4831206),
zoom = 6,
scale = "auto",
maptype = c("terrain"),
source = c("google"))
library(tidyverse)
Anatomy <- tribble(~Species, ~Lat, ~Long, ~Station,
"A", 50, 60, "I",
"A", 50, 60, "I",
"A", 40, 30, "II",
"B", 50, 60, "I",
"B", 40, 30, "II")
Anatomy_clean <- Anatomy %>%
mutate_at(c("Lat", "Long"), funs(-1*.)) %>%
count(Species, Lat, Long, Station)
#> Warning: funs() is soft deprecated as of dplyr 0.8.0
#> please use list() instead
#>
#> # Before:
#> funs(name = f(.)
#>
#> # After:
#> list(name = ~f(.))
#> This warning is displayed once per session.
ggmap(B) +
geom_point(data=Anatomy_clean,
aes(x= Lat,y=Long, color=Species, size= n)) +
scale_size_continuous(range=c(1,12))
#> Warning: Removed 2 rows containing missing values (geom_point).