R中使用csv文件在地图上绘制坐标的新手问题

5

我是r语言的新手,已经尝试了几个小时在亚利桑那州地图上绘制蝴蝶家族的点。我可能做错了什么或者缺少了一些东西,不确定,希望能得到帮助!

现在我有以下代码,并尝试了许多其他代码:

rio = read.csv("Rioninidae_Cleaned.csv",stringsAsFactors = FALSE)
arizona <- get_googlemap(center=c(lon=-110.713,lat=31.815), zoom = 3)
lon <-data.frame(rio$latitude)
lat <-data.frame(rio$longitude)
df <- as.data.frame(cbind(lon,lat))
df
arizona <- get_googlemap(center = c(lon = -110.713,lat = 31.815), zoom = 3)
ggmap(arizona) +
  geom_point(data = df, aes(x = lon, y = lat), size = 5, shape = 21) +
  guides(fill = FALSE, alpha = FALSE, size = FALSE)

我的csv文件可以在这里找到:https://www.dropbox.com/s/yxj1uvmt9bw8gvn/Rioninidae_Cleaned.csv?dl=0

该链接指向一个csv文件,您可以通过点击链接来下载该文件。
       genus province         county latitude longitude
1   Apodemia  Arizona         Apache 33.90011 -109.5844
2   Apodemia  Arizona Cochise County 31.46260 -110.2895
3   Apodemia  Arizona Cochise County 31.46260 -110.2895
4   Apodemia  Arizona    Santa Cruz  31.50503 -110.6547
5     Emesis  Arizona     Santa Cruz 31.74001 -110.9411
6     Emesis  Arizona     Santa Cruz 31.74001 -110.9411
7     Emesis  Arizona     Santa Cruz 31.38333 -111.0833
8   Apodemia  Arizona     Santa Cruz 31.38333 -111.0833
9 Calephelis  Arizona           Pima 31.76667 -111.5500

谢谢!

1个回答

7
我猜你可能在寻找类似这样的东西。
library(ggmap)
library(ggplot2)

# Get a map
arizona <- get_map(location = c(lon = -110.713, lat = 31.815), zoom = 6)

ggmap(arizona) +
geom_point(data = mydf, aes(x = longitude, y = latitude, fill = genus), size = 3, shape = 21)

输入图像描述

数据

mydf <- structure(list(genus = structure(c(1L, 1L, 1L, 1L, 3L, 3L, 3L, 
1L, 2L), .Label = c("Apodemia", "Calephelis", "Emesis"), class = "factor"), 
province = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L
), .Label = "Arizona", class = "factor"), county = structure(c(1L, 
2L, 2L, 5L, 4L, 4L, 4L, 4L, 3L), .Label = c("Apache", "Cochise County", 
"Pima", "Santa Cruz", "Santa Cruz "), class = "factor"), 
latitude = c(33.9001056, 31.4625978, 31.4625978, 31.5050272, 
31.7400056, 31.7400056, 31.38333333, 31.38333333, 31.76666667
), longitude = c(-109.58444, -110.2895241, -110.2895241, 
-110.65472, -110.94111, -110.94111, -111.0833333, -111.0833333, 
-111.55)), .Names = c("genus", "province", "county", "latitude", 
"longitude"), class = "data.frame", row.names = c(NA, -9L))

是的,就是这样!非常感谢,我永远也想不到那个结构命令! - poolshark
@poolshark 很高兴听到这正是你想要的。 :) - jazzurro
谢谢!只是在想如果我有一百个以上的坐标怎么办呢?我该如何改变结构? - poolshark
我有这个csv文件:https://www.dropbox.com/s/akwecz1xb35ls7f/Carabidae_Cleaned.csv?dl=0,我想在地图上叠加它的坐标,我只需要将坐标输入数据框中吗?抱歉,我对此完全不了解。 - poolshark
啊,它工作得非常好,我现在明白了,非常感谢!我曾经困惑于认为我必须在结构中物理输入坐标。你是我的救命恩人! :) - poolshark
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接