# How to I limit the x and y axes with tmap in r

I have made this plot with the following code:

``````library(tmap)
tm_shape(RH2) +
tm_fill(col="AREAL") +
tm_borders()
`````` But there is a dot on the far right (an island) which I don't understand why it is there. Is there a way to limit the plot to avoid all the white spaces? like `coord_fixed(xlim=c(7, 12), ylim=c(52, 58))` in ggmap?

Have you read the help for `tm_shape`? It gives the following parameter:

``````bbox: bounding box. One of the following:

• A bounding box (an ‘sf’ bbox object, see ‘st_bbox’, a 2
by 2 matrix (used by the ‘sp’ package), or an ‘Extent’
object used by the ‘raster’ package).
``````

Its in map units rather than lat-long, so with the `World` data from the help you can do:

``````tm_shape(World, bbox=tmaptools::bb(matrix(c(0,0,2000000,2000000),2,2))) +tm_polygons()
``````
• @ Thanks spacedman. I will look at it tomorrow when I have my computer. But what is your take on sp vs sf objects? – xhr489 Jan 30 '19 at 17:27
• Use `sf` whenever possible. – Spacedman Jan 30 '19 at 22:28
• @ Spacedman: How does one convert lon-lat units to map units? – xhr489 Feb 1 '19 at 6:03
• Its the same coordinates as the thing you have in the `tm_shape` function. If this is a thing in lat-long coordinates, then the map coordinates are also lat-long coordinates. But if you are working with maps in projected coordinates then you use those. see `sp::spTransform` or `sf:st_transform` for more. – Spacedman Feb 1 '19 at 7:51
• @ Spacedman: Actually I don't think I need transforming. If I look at the "dots" geometry object and print it, the `sf object` prints the numbers I need for making the bbox. That is `mysf_object\$geometry[row_num]`. But how can I get the bbox numbers for the main plot? – xhr489 Feb 1 '19 at 13:53