3
votes

I wish to plot a matrix (temp_matrix) after converting it to a raster object (tempMap). Further, I wish to add few points whose latitude and longitude locations are available to me on the same plot window. I have tried few approaches but none seems to work since the points available are specific locations in lat/long while the raster object I am getting has a different extent. Please help me with this issue. Given below is the sample data for the problem.

library(raster)
temp_matrix<-array(NA,c(11,11))
temp_matrix[1,]<-c(NA,NA,NA,NA,NA,NA,NA,0,0,-6,-6)
temp_matrix[2,]<-c(0,0,0,0,NA,NA,1,0,0,0,0)
temp_matrix[3,]<-c(1,0,0,-1,-1,0,0,0,1,0,0)
temp_matrix[4,]<-c(1,1,0,0,0,0,-1,-1,0,0,0)
temp_matrix[5,]<-c(1,NA,NA,NA,NA,-1,-1,-1,0,-1,-1)
temp_matrix[6,]<-c(NA,NA,NA,NA,NA,NA,-1,-1,-1,0,0)
temp_matrix[7,]<-c(NA,NA,NA,NA,NA,NA,NA,0,-1,0,0)
temp_matrix[8,]<-c( NA,NA,NA,NA,NA,NA,NA,0,0,0,-1)
temp_matrix[9,]<-c(NA,NA,NA,NA,NA,NA,NA,-1,0,0,0)
temp_matrix[10,]<-c(NA,NA,NA,NA,NA,NA,NA,NA,-1,-1,-2)
temp_matrix[11,]<-c(NA,NA,NA,NA,NA,NA,NA,NA,-2,-3,-2)
plot(raster(temp_matrix),axes = FALSE,legend=FALSE)
tempMap <- raster(temp_matrix)

# plot the points over this raster layer
point_1<-c(10,10) # should appear on 2nd row from top i.e. over temp_matrix[2,10]
point_2<-c(9,10)  # should appear on 3rd row from top i.e. over temp_matrix[3,10]
point_3<-c(1,10)  # should appear on lowermost row i.e.over temp_matrix[11,10]
1

1 Answers

6
votes

You need to set your desired extent, not rely on the default values.

As the help for raster states

## S4 method for signature 'matrix'
raster(x, xmn=0, xmx=1, ymn=0, ymx=1, crs=NA, template=NULL)

with

  • xmn :: minimum x coordinate (left border)

  • xmx :: maximum x coordinate (right border)

  • ymn :: minimum y coordinate (bottom border)

  • ymx :: maximum y coordinate (top border)

You can set xmn, xmx, ymn and ymx to the values you wish (1, 11, 1, 11) in this case)

tempMap <- raster(temp_matrix, xmn = 1, xmx = 11, ymn = 1, ymx=11)
plot(tempMap,axes = FALSE,legend=FALSE)
points(c(10,9,1), c(10,10,10))