使用R中的映射函数

时间:2016-11-16 21:10:04

标签: r maps

我导入了一个地震数据集,并使用map()和mapproj()库将地震点绘制到地图上。但我遇到的问题是,如果我想隔离一个我知道其中有地震点的国家,再次运行代码,我就无法得到积分! 这是我正在使用的(编辑:整个)代码:

library(maps) library(mapproj) EQpoints <- read.csv(file="C:\Users\User\Desktop\EQpoints.csv", head=TRUE, sep=",") map("world",proj="mercator",xlim=c(-170,170)) points(mapproject(list(y=EQpoints[EQpoints$Magnitude>5,]$Latitude, x=EQpoints[EQpoints$Magnitude>5,]$Longitude)),col=2,pch=".",cex=1)

这可以很好地将点映射到地球上但是如果我孤立地说中国就像这样:

map("world","China",col="orange", bg="black") points(mapproject(list(y=EQpoints[EQpoints$Magnitude>5,]$Latitude, x=EQpoints[EQpoints$Magnitude>5,]$Longitude)),col=2,pch=".",cex=1) 中国的地图出现但没有数据点出现?

关于我如何解决此问题的任何建议?

另外,我遇​​到的问题是,当我重新运行代码时,地图大小有时会改变大小?有什么想法吗?

由于

编辑:这是使用dput()的输出:

structure(list(Magnitude = c(7.6, 6.9, 7.2, 8.3, 6.9), Latitude = c(52, 
50.71, 60, 60, 60), Longitude = c(172, -179.5, -150, -142, -142
)), .Names = c("Magnitude", "Latitude", "Longitude"), row.names = c(NA, 
5L), class = "data.frame")

structure(list(Magnitude = c(7.6, 6.9, 7.2, 8.3, 6.9), Latitude = c(52, 50.71, 60, 60, 60), Longitude = c(172, -179.5, -150, -142, -142 )), .Names = c("Magnitude", "Latitude", "Longitude"), row.names = c(NA, 5L), class = "data.frame")

查看数据,前五个条目是围绕阿拉斯加

1 个答案:

答案 0 :(得分:1)

在您的第二个'components' => [ 'db' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=db', 'username' => 'root', 'password' => '', 'charset' => 'utf8mb4', 命令(仅限中国地图)中,您没有指定投影!但是您可以通过map()来获取积分。这绝对不行。 &#34; mapproject&#34;记住上次使用的投影(尝试mapproject),但如果您未在.Last.projection()命令中指定投影,则不会重置。因此,在第二次调用中,您使用map()作为点,但是使用lat / lon作为地图。