我有一个包含值0和1的矩阵A(lat,lon)。 我想绘制一张世界地图,其中1有圆圈点重叠 带有轮廓的白色全球地图。
我在网上找到了一些例子但是我一直在遇到问题 超出我的。我试过"图像"但是我错误地绘制了数据并且点太小而无法看到。我是R的新手,想要一个简单的情节来开始学习如何在R中绘制地图,以及添加叠加。
非常感谢任何帮助。我正在使用R版本:R版本3.1.2(2014-10-31)南瓜头盔。
我已尝试过此代码:
library(maps)
library(mapdata)
library(maptools)
map(database = 'world',
xlim = c(-180, 180),
ylim = c(-90, 90),
fill = T,
col = 'white',
resolution = 0,
bg = 'white',
mar = c(1,1,2,1))
points(dcn18,pch = 21,cex = 2,col = 'red')
title(xlab = 'Longitude',ylab = 'Latitude',main = '')
axis(1, labels = T)
axis(2, labels = T)
grid()
box()
此代码效果很好,可以生成一个漂亮的地图。但我不确定如何将这些点添加为圆圈,当这些点在矩阵dcn18(lat,lon)中为1和0时,我只得到一个红色的圆圈lat 0和lon 0.我想我需要将lon和lat数据映射到只有1的dcn18,收集这些有效点并将它们作为数据帧传递给点。但我不知道如何在R中做到这一点。
我正在玩的另一个解决方案,更接近,但因为我的数据有NaN,其他问题,我认为"图像"不是一个好的解决方案。
map(database = 'world',
xlim = c(-180, 180),
ylim = c(-90, 90),
fill = T,
col = 'white',
resolution = 0,
bg = 'white',
mar = c(1,1,2,1))
image(seq(-180,180),seq(-90,90),dcn18.l180, xlim=c(-180,180),
ylim=c(-90,90), col = heat.colors(12),fill=FALSE,
add =TRUE)
title(xlab = 'Longitude',ylab = 'Latitude',main = '')
axis(1, labels = T)
axis(2, labels = T)
grid()
box()
答案 0 :(得分:1)
坐标需要按照经度/纬度顺序绑定在一起:
#Data Preparation:
Lat <- c("-80", "50", "-20", "0", "20", "-50", "80" )
Lon <- c("-150", "-100", "-50", "0", "50", "100", "150" )
#Bind your two columns
LonLat <- cbind(Lon, Lat)
#Draw your world map here
#Draw your points on the map
points(LonLat,pch = 21,cex = 2,col = 'red')